0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
1
Delphi 6-7

Фибоначчи

18.05.2019, 10:57. Показов 887. Ответов 15

Author24 — интернет-сервис помощи студентам
f:file of integer; Компоненты числа Фибоначчи записать в конец файла следующий член последовательности. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2019, 10:57
Ответы с готовыми решениями:

Последовательность Фибоначчи. Сумма в последовательности Фибоначчи для числа N
смысл задачи - каждое число можно представить как сумму чисел из ряда Фибоначчи. 1>2>3>5>8>13>21...

Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное число М
Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное...

Фибоначчи!!
вывести последовательность Фибоначчи до заданного числа, т.е пользовательо задает число с...

Фибоначчи и while
Дано целое число N(>1). Последовательность чисел Фибоначчи F(k) определяется следующим образом:...

15
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,120
18.05.2019, 14:48 2
Цитата Сообщение от Донил Посмотреть сообщение
f:file of integer
обязательно типизированный файл?
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
18.05.2019, 15:29  [ТС] 3
Да, нужно именно использовать типизированный файл.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
19.05.2019, 21:50  [ТС] 4
Ну так что, поможете?
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
19.05.2019, 22:33 5
Донил, например, так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm1.Button5Click(Sender: TObject);
var
  f: file of longint;
  fsize, i1, i2: longint;
begin
  // Дописать в конец файла очередное число Фибоначчи.
  // Открыть файл
  System.Assign(f, 'fib.dat');
  try
    Reset(f);
  except
    // Если его нет, то создать
    Rewrite(f);
  end;
  fsize := System.FileSize(f);
  if fsize < 2 then begin
    // Если в файле меньше 2 чисел, то очистить файл
    Rewrite(f);
    i1 := 0;
    i2 := 1;
    // и записать в него первые 2 числа из ряда Фибоначчи
    Write(f, i1, i2);
    System.CloseFile(f);
    exit;
  end;
  // Если больше 2 чисел, то читаем 2 последних числа
  System.Seek(f, fsize - 2);
  Read(f, i1, i2);
  // Считаем следующий элемент
  i1 := i1 + i2;
  // И записываем его в файл. При этом, указатель стоит уже в конце файла
  Write(f, i1);
  CloseFile(f);
end;
Здесь использован тип longint потому, что у него размер 32 бит, а размер integer может отличаться в зависимости от реализации.
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
20.05.2019, 09:22 6
Цитата Сообщение от AzAtom Посмотреть сообщение
потому, что у него размер 32 бит, а размер integer может отличаться в зависимости от реализации.
Возьми слова обратно!(с)Веревкин
longint имеет ту же ёмкость, что и Integer. Для больших чисел есть Int64.
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
20.05.2019, 09:59 7
Цитата Сообщение от Matan! Посмотреть сообщение
longint имеет ту же ёмкость, что и Integer.
В pascal под dos integer 16 битный, в delphi 32 бит, а в какой-то другой реализации может оказаться и 64 бит, так что, не возьму слова обратно.
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
20.05.2019, 10:05 8
Цитата Сообщение от AzAtom Посмотреть сообщение
а в какой-то другой реализации может оказаться и 64 би
Не может.
А насчёт 16.. Вы до сих пор пользуетесь DOSом?
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
20.05.2019, 10:13 9
Цитата Сообщение от Matan! Посмотреть сообщение
Не может.
Кто гарантирует?

Цитата Сообщение от Matan! Посмотреть сообщение
Вы до сих пор пользуетесь DOSом?
Лично я нет. Но люди бывает и пишут утилиты всякие.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
21.05.2019, 17:45  [ТС] 10
А для чего вы пишете system? И если я так код упрощу, то он работать будет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button3Click(Sender: TObject);
var
  f: file of integer;
  fsize, i1, i2: integer;
begin
  // Дописать в конец файла очередное число Фибоначчи.
  // Открыть файл
  Assignfile(f, 'fib.txt');
    Rewrite(f);
  fsize := FileSize(f);
    i1 := 1;
    i2 := 1;
    // и записать в него первые 2 числа из ряда Фибоначчи
    Write(f, i1, i2);
CloseFile(f);
  // Если больше 2 чисел, то читаем 2 последних числа
Seek(f, fsize - 2);
  Read(f, i1, i2);
  // Считаем следующий элемент
  i1 := i1 + i2;
  // И записываем его в файл. При этом, указатель стоит уже в конце файла
  Write(f, i1);
  CloseFile(f);
end;
Добавлено через 10 минут
Самое главное, подскажите пожалуйста, возникла такая проблема: после всех действий вместо цифр в файле, я вижу непонятные символы. Открывал через блокнот и word.
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
21.05.2019, 17:46 11
Цитата Сообщение от Донил Посмотреть сообщение
А для чего вы пишете system?
Если просто написать Assign, то первым находит эту функцию из модуля Classes, а это не то, что нужно.
Остальные функции вроде и без System. правильно находит.

Цитата Сообщение от Донил Посмотреть сообщение
И если я так код упрощу, то он работать будет?
Сам по себе код работать будет, но не так, как тебе нужно. В самом начале
Delphi
1
2
  Assignfile(f, 'fib.txt');
  Rewrite(f);
и файл будет очищен и перезаписан (создан) заново. А нужно его просто открыть, если он существует, и создавать, если его нет или в нём меньше чисел, чем требуется для вычисления следующего элемента последовательности.

Ну в общем, пробуй, смотри, что получается.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
21.05.2019, 17:48  [ТС] 12
Вот я использую ваш код, кнопка нажалась без ошибок, но вот при открытии файла там "прямоугольнички" вместо цифр.
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
21.05.2019, 17:54 13
Цитата Сообщение от Донил Посмотреть сообщение
при открытии файла там "прямоугольнички" вместо цифр.
Файл fib.txt? Ну правильно, там не текст, а числа типа integer. Я поэтому написал fib.dat, чтобы не открывалось как текст.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
21.05.2019, 18:07  [ТС] 14
Нет, я целиком ваш код вставил, .dat оставил. Но проблема не исчезла.

Добавлено через 2 минуты
Q>;b вот что выходит вместо следующего числа Фибоначчи.
0
Модератор
3625 / 2147 / 758
Регистрация: 15.11.2015
Сообщений: 8,617
21.05.2019, 18:22 15
Донил, в задании написано, что нужно использовать именно file of integer?
Просто такой файл не открывается в обычном текстовом редакторе. Можно посмотреть в HEX редакторе. FAR тоже может показать.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 33
21.05.2019, 19:51  [ТС] 16
Хорошо, спасибо большое, буду пробывать.
0
21.05.2019, 19:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2019, 19:51
Помогаю со студенческими работами здесь

Фибоначчи-Трибоначчи
Ребята, подсобите немного, если не сложно. Требуется для вводимого числа построить значения...

Числа Фибоначчи
Числа Фибоначчи.Определить 40-е число Фибоначчи Плизз!!!в делфи:(

Фибоначчи длинных чисел
Народ, требуется сделать программу нахождения N-ного числа Фибоначчи. Соль в том, что нужно, чтобы...

массивы + числа Фибоначчи
Разработать проект. Delphi:wall: Вводятся размеры и элементы двумерного массива. Составить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru