Разработка программы для решения задачи на взвешивание в фибоначчиваемой системе счисления средствами Delphi

Автор работы: Пользователь скрыл имя, 16 Апреля 2013 в 11:35, курсовая работа

Описание работы

Целью курсовой работы, выполненной на тему "Разработка программы для решения задачи на взвешивание в фибоначчиваемой системе исчисления средствами Delphi", является разработка программы, позволяющей получать как результат представление любого натурального числа в фибоначчиевой системе счисления.
Были поставлены следующие задачи:
1. изучение чисел Фибоначчи;
2. рассмотрение различных систем счисления;
3. изучение фибоначчиевой системы счисления;
4. изучение возможностей применения чисел Фибоначчи в различных областях;
5. реализация на компьютерном языке программирования программы для перевода чисел в фибоначчиеву систему счисления.

Содержание работы

Введение……………………………………………………………………..4
2. Теоретическая часть………………………………………………………...5
2.1. Система счисления………………………………………………....5
2.2. Виды систем счисления……………………………………………5
2.2.1. Позиционные системы счисления………………………..5
2.2.2. Непозиционные системы счисления……………………..7
2.2.3. Смешанные системы счисления………………………….7
2.3. Числа Фибоначчи…………………………………………………..7
2.4. Использование чисел Фибоначчи в различных областях……….8
2.5. Фибоначчиева система счисления……………………………….15
2.6. Задача на взвешивание……………………………………………16
2.6.1. Решение задачи на взвешивание………………………...16
3. Практическая часть………………………………………………………..19
3.1. Описание программы…………………………………………….19
3.2. Интерфейс программы…………………………………………...19
3.3. Блок-схема………………………………………………………....22
4. Заключение………………………………………………………………....23
5. Список литературы………………………………………………………..24
6. Приложение………………………………………………………………..26

Файлы: 1 файл

Фибоначчиева система счисления.doc

— 291.00 Кб (Скачать файл)

2.6. Задача на взвешивание.       Процесс представления чисел в фибоначчиевой системе счисления можно рассмотреть на примере задач на взвешивание.    Постановка задачи:         Имеется набор гирь весом Q. Груз весом в N уравновешивается гирями из этого набора, где A=1, если эта гиря берется, или А=0, если она не берется, т.е. число N можно представить как:   ,      где ряд Фибоначчи записывается в виде (1,2,…k), т.е. необходимо записать ряд от наибольшего числа в последовательности до наименьшего для реализации задачи на взвешивание.      Алгоритм записи числа в Фибоначчиевой системе счисления – берется число Фибоначчи не большее числа, которое необходимо перевести, и вычитается из него (ему присваивается значение единицы), потом идет перебор чисел ряда до тех пор (параллельно присваивая им значение нуля), пока не найдется число, меньшее или равное остатку, которое снова вычитается. Процесс будет продолжаться до тех пор, пока не будет в остатке ноль.

2.6.1. Решение задачи на взвешивание.    Необходимо перевести число 31 в фибоначчиеву систему счисления.

Шаг 1: построение последовательности Фибоначчи до числа 31 - 1,2,3,5,8,13,21.            Шаг 2: Перечисление последовательности Фибоначчи до числа 31 в обратном порядке: 21,13,8,5,3,2,1.         Шаг 3: Операции вычитания для получения остатков и присвоения нулей и единиц:           31-21=10, т.е. число 21 входит в сумму, ему присваиваем значение '1'. 13-число превосходит остаток, поэтому ему присваиваем значение '0', переходим к следующему.         8, число не превосходит остаток, 10-8=2, число 8 входит в сумму, ему присваиваем значение '1', переходим к следующему.     5-число превосходит остаток, присваиваем значение '0', переходим к следующему.           3-число превосходит остаток, присваиваем значение '0', переходим к следующему.           2, число не превосходит остаток, 2-2=0, присваиваем значение '1', в остатке получаем 0, тогда числу 1 присваиваем значение ‘0’, цикл закончен, как итог такая последовательность: 1010010

Шаг 4: Проверка результата: .

Рис. 9. Задача на взвешивание.

 

3. Практическая часть.

3.1. Описание программы.

Полученная в результате выполнения курсовой работы программа позволит повысить скорость расчетов по сравнению с ручными расчетами, а также повысить точность и надежность вычислений.

Программа предназначена  для следующих основных функций:   - ввод числа, которое требуется перевести в фибоначчиеву систему счисления.             - вывод последовательности фибоначчи и вывод последовательности из нулей и единиц, которая представляет собой число в фибоначчиевой системе счисления.           Входной информацией будет являться натуральное число X, которое нужно перевести в фибоначчиеву систему счисления.   Входная информация визуально представлена в виде пустой строки, куда необходимо ввести число для перевода. Ввод производится с клавиатуры.           Программа должна обеспечивать вывод ряда чисел Фибоначчи до вбиваемого числа и представление этого числа в фибоначчиевой системе счисления.          Разрабатываемая программа должна работать в любой версии операционных систем семейства Windows.

3.2. Описание  интерфейса программы.

В начале проектирования программы при запуске среды разработки автоматически было создано главное окно программы - Form1, которое и будет служить ее интерфейсом. Затем на форму были помещены следующие компоненты (рис.10):

    • Label – метки для отображения названий полей.
    • Edit – текстовые поля для ввода данных и вывода результата,
    • Button – командные кнопки для произведения расчетов и удобного выхода из программы.

 

рис. 10. Form 1.

В Edit1 вводится пользователем число X, которое необходимо перевести в фибоначчиеву систему счисления, после нажатия на кнопку «Расчет» (Button 1) в Edit 2 выводится последовательность Фибоначчи до этого числа и представление его в фибоначчиевой системе счисления. Нажатием на кнопку «Выход» (Button 2) пользователь может выйти из программы.

 


 

 
      6.3. Блок-схема.

  























 

4. Заключение

В результате выполнения курсовой работы, разработанной на тему "Разработка программы для  решения задачи на взвешивание в  фибоначчиваемой системе исчисления средствами Delphi" были выполнены все поставленные задачи.

При проведении анализа предметной области были подробно описаны теоретические  основы математической модели, приведены  обоснование и словесное описание разрабатываемого алгоритма.

При описании постановки задачи курсовой работы были сформулированы требования к программе, выполнен выбор среды разработки и языка программирования.

          При описании практической части  даны пояснения назначения каждого  блока, характеристика вычислительного  процесса и его организация, приведен текст исходного программного модуля на выбранном языке программирования.

Внедрение данной программы позволит автоматически переводить любое число в фибоначчиеву систему счисления с помощью компьютера.

В ходе выполнения курсовой работы был разработана программа «Project1.exe», выполненный при помощи языка программирования Object Pascal в интегрированной среде разработки Delphi.

 

5. Литература

  1. http://ru.wikipedia.org/wiki/Числа_Фибоначчи
  2. http://ru.wikipedia.org/wiki/Фибоначчиева_система_счисления
  3. http://ru.wikipedia.org/wiki/Дерево_Фибоначчи
  4. http://ru.wikipedia.org/wiki/Золотое_сечение
  5. http://ru.wikipedia.org/wiki/Метод_Фибоначчи_с_запаздываниями
  6. http://ru.wikipedia.org/wiki/Система_счисления
  7. http://www.mathematik.boom.ru/SIST/sist.htm
  8. http://ta.mql4.com/ru/linestudies/fibonacci
  9. http://enc.fxeuroclub.ru/476/
  10. http://enc.fxeuroclub.ru/149/
  11. http://enc.fxeuroclub.ru/467/
  12. http://ta.mql4.com/ru/linestudies/fibonacci_fan
  13. http://ta.mql4.com/ru/linestudies/trendlines
  14. http://ta.mql4.com/ru/linestudies/fibonacci_time_zones
  15. http://ta.mql4.com/ru/linestudies/fibonacci_expansion
  16. А. И. Маркушевич Возвратные последовательности. — Гос. Издательство Технико-Теоретической Литературы, 1950. — Т. 1. — (Популярные лекции по математике)
  17. А. Н. Рудаков Числа Фибоначчи и простота числа 2127-1 // Математическое Просвещение, третья серия. — 2000. — Т. 4.
  18. Н. Н. Воробьёв Числа Фибоначчи. — Наука, 1978. — Т. 39. — (Популярные лекции по математике).
  19. Коробко В.И. Золотая пропорция и проблемы гармонии систем. Москва, Изд-во Ассоциации строительных вузов, 1998 г.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. Приложение.

6.1. Листинг программы.

  unit Unit1; {название модуля}

interface{область, описывающая интерфейс}

uses {подключаемые модули}

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

Type  {описываемые типы}

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Button1: TButton;

    Label1: TLabel;

    Label2: TLabel;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var   {объявление глобальных переменных}

  Form1: TForm1;

 

Implementation {область описания реализации}

 

{$R *.dfm}   {обработчик изменения значения в счетчике}

        function fibonacci(x : integer) : string;

var

    n0, n1 : integer;

    seq, tmp : string;

begin

    n0 := 1;

    n1 := 2;

    seq := '( 1'; { Инициализация строки результата }

    while x >= n1 do { Перечисляем все числа Ф. не превышающие заданного x }

    begin

        str( n1, tmp ); { Преобразуем текущее числа  Ф. в строку }

        seq := seq + ', ' + tmp; { Дописываем через  запятую в список }

        n1 := n1 + n0; { Пусть n0 = A, n1 = B, тогда n1 = n1 + n0 = B + A }

        n0 := n1 - n0; {   n0 = n1 - n0 = ( A + B ) - A = B }

    end;

    seq := seq + ' ); '; { Помечаем конец списка  чисел Ф. }

    while n1 > 1 do { Перечисляем те же числа  Ф., но уже в сторону убывания }

    begin

        if x >= n0 then { Если текущее число Ф. не превосходит остатка от x }

        begin

            x := x - n0; { Вычитаем число Ф. из  остатка x }

            seq := seq + '1'; { Отмечаем, что текущее  число Ф. входит в сумму }

        end

        else seq := seq + '0'; { Иначе - отмечаем отсутствие }

        n0 := n1 - n0; { Пусть n0 = B, n1 = A + B, тогда  n0 = n1 - n0 = }

        n1 := n1 - n0; {   = A + B - B = A, n1 = n1 - n0 = A + B - A = B }

    end;

    fibonacci := seq; { Возвращаем строку результата }

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

    xval : integer;

begin { Пример  использования: Из Edit1 берем x, результат  выводим в Edit2 }

    xval := StrToInt (Edit1.Text);

    if xval > 0 then

        Edit2.Text := fibonacci( xval ){если число больше 0, вызываем процедуру}

    else

        Edit2.Text := 'Определенно, ' + Edit1.Text +

            ' - не целое и положительное число.';

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

close {процедура выхода}

end;

 

end.

 

 


Информация о работе Разработка программы для решения задачи на взвешивание в фибоначчиваемой системе счисления средствами Delphi