ПОМОГИТЕ ИСПРАВИТЬ ЗАДАЧКУ

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
kardan
Сообщения: 3
Зарегистрирован: 02 апр 2008, 16:45

задан массив A(n) целого типа. и в зависимости от того, есть ли среди элементов массива хотя бы одно число Фибоначчи, вывести сообщение true , false

program tyr;
uses crt;
Var
n:integer;
mas : array [1..100] of integer;
i : integer;
Begin
clrscr;
writeln('vv');
readln(n);
for i:=3 to n do
begin
if mas[i-1]+mas[i-2]=mas then writeln ('true') else writeln ('false') ;
End;
readln;
end.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Вообще я бы посоветовал сформировать массив чисел Фибоначчии, а потом проверять каждый элемент на вхождение в массив. Дальше объявляем переменную типа Boolean с исходным значением FALSE.
Перебираем весь массив, и если текущий элемент исследуемого массива совпадает с одним из элементов массива чисел фибоначчи, то присваиваем переменной значение TRUE, потом просто выводим значение этой переменной.
Ни что так не ограничивает фантазию программиста, как компилятор...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Добавить нечего. Ваша программа просто проверяет каждое число, начиная с третьего, не является ли оно суммой двух предыдущих
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
kardan
Сообщения: 3
Зарегистрирован: 02 апр 2008, 16:45

пожалуйста напишите алгоритм, а то я в паскале не очень
Dim...ON
Сообщения: 75
Зарегистрирован: 28 янв 2008, 01:10
Контактная информация:

kardan, а чем тебе алгоритм MOTOCoder'а не алгоритм?
kardan
Сообщения: 3
Зарегистрирован: 02 апр 2008, 16:45

а если вот так?
program trew;
uses crt;
var
Data:array [1..100] of integer;
a_n,a_n1:integer;{Два последовательных члена ряда}
c,j,n,s:integer;{Вспомогательная переменная}
Stop:boolean;
begin
a_n:=0;a_n1:=1;
while Stop do
begin
c:=a_n1;
a_n1:=a_n+a_n1;
a_n:=c;
Stop:=false;
for j:=1 to n do
begin
if Data[j]=a_n+1 then S:=S+1;
if Data[j]>s then Stop:=true;
end;
end;
readkey;
end.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Хыиуду писал(а):Добавить нечего. Ваша программа просто проверяет каждое число, начиная с третьего, не является ли оно суммой двух предыдущих
Может я и не прав, но помоему то, что написано у Вас будет проверять, является ли массив рядом чисел Фибоначчи, а задача состоит в том, чтобы проверить, есть ли в массиве хоть одно число Фибоначчи.
Ни что так не ограничивает фантазию программиста, как компилятор...
Dim...ON
Сообщения: 75
Зарегистрирован: 28 янв 2008, 01:10
Контактная информация:

kardan писал(а):а если вот так?
что если вот так? суть вопроса в чём?
или ты взял где-то этот кусок кода и сам не можешь проверить удовлетворяет ли он твоему заданию? потому что ошибок в коде немерено, что в первом что во вротом.
а не проще спросить так: "Ребят, решите за меня задачу, а я заплачу за работу!" ?
или же задавай конкретный вопрос
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Кстати, процедура нахождения N-ного числа Фибоначчи есть в разделе "Алгоритмы".
Ни что так не ограничивает фантазию программиста, как компилятор...
Ответить