Автор работы: Пользователь скрыл имя, 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
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, которое
нужно перевести в фибоначчиеву систему
счисления. Входная информация визуально
представлена в виде пустой строки, куда
необходимо ввести число для перевода.
Ввод производится с клавиатуры. Программа
должна обеспечивать вывод ряда чисел
Фибоначчи до вбиваемого числа и представление
этого числа в фибоначчиевой системе счисления.
3.2. Описание интерфейса программы.
В начале проектирования программы при запуске среды разработки автоматически было создано главное окно программы - Form1, которое и будет служить ее интерфейсом. Затем на форму были помещены следующие компоненты (рис.10):
рис. 10. Form 1.
В Edit1 вводится пользователем число X, которое необходимо перевести в фибоначчиеву систему счисления, после нажатия на кнопку «Расчет» (Button 1) в Edit 2 выводится последовательность Фибоначчи до этого числа и представление его в фибоначчиевой системе счисления. Нажатием на кнопку «Выход» (Button 2) пользователь может выйти из программы.
6.3. Блок-схема.
4. Заключение
В результате выполнения
курсовой работы, разработанной на
тему "Разработка программы для
решения задачи на взвешивание в
фибоначчиваемой системе
При проведении анализа предметной
области были подробно описаны теоретические
основы математической модели, приведены
обоснование и словесное
При описании постановки задачи курсовой работы были сформулированы требования к программе, выполнен выбор среды разработки и языка программирования.
При описании практической
Внедрение данной программы позволит автоматически переводить любое число в фибоначчиеву систему счисления с помощью компьютера.
В ходе выполнения курсовой работы был разработана программа «Project1.exe», выполненный при помощи языка программирования Object Pascal в интегрированной среде разработки Delphi.
5. Литература
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.