Консультация № 174651
28.11.2009, 19:46
0.00 руб.
0 7 1
Добрый день, уважаемые эксперты! Помогите пожалуйста с одной задачкой!
Даны натуральное число n и целочисленный массив из n элементов(массив одномерный).
Подсчитать кол-во серий из чисел Фибоначи и выдать эти серии.

Обсуждение

Неизвестный
29.11.2009, 12:22
общий
Хм. Элементы массива можно переставлять? Если можно, то каждый элемент массива можно использовать несколько раз?
"Серия из чисел Фибоначчи" должна начинаться с 1? Если нет, то из скольки, минимально, чисел должна состоять серия?
--
Видите, как неопределенна Ваша просьба
Неизвестный
29.11.2009, 13:23
общий
Вижу,просто так дал задание препод.По поводу серий,думаю что серия должна состоять как минимум из 3 чисел,чтобы можно было определить серия или нет.
Как я понял нужно сначала ввести массив,если там образуются серии из чисел фибоначчи,то нужно "Подсчитать кол-во серий и выдать эти серии",а если нет серий в массиве, то выдать сообщение. По поводу переставлять элементы не уверен,вроде нет
давно
Академик
320937
2216
01.12.2009, 15:49
общий
это ответ
Здравствуйте, angel.nero. Серией считаем самую длинную из возможных, длина не менее 3х элементов. Например, 1,1,2,3,1,1,2,3,5 содержит 2 серии (поскольку иное не указано). Ответ в приложении. Turbo Pascal.


Приложение:
{
Вопрос № 174651
Даны натуральное число n и целочисленный массив из n элементов(массив одномерный).
Подсчитать кол-во серий из чисел Фибоначи и выдать эти серии.
}
program p174561;
uses
crt;
const
MaxSize = 100;

type
TVector = array[1..MaxSize] of LongInt;

var
a: TVector;
i: integer;
j: integer;
first: integer;
len: integer; { длина текущей серии }
count: integer; { число серий }
n: integer; { используемый размер массива }
begin
repeat
clrscr;
write('n=');
readln(n)
until (n>0) and (n<=MaxSize);

for i:= 1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;

len := 0;
count := 0;
if (n>2) then { массив менее 3х элементов не содержит серий }
begin
if (a[1]=1) and (a[2]=1) then
begin
len := 2;
first := 1;
end;
for i:= 3 to n do
if (a[i]=1) then
begin
if (len=1) then
len := 2
else
begin
len := 1;
first := i;
end
end
else if (a[i]=a[i-1]+a[i-2]) and (len>=2) then
{ проверка, начиная с 3-го элемента }
begin
inc(len);
if (len=3) then { начало серии }
begin
inc(count);
writeln;
writeln('Серия номер ',count, '->');
write(a[i-2],';',a[i-1],';');
end;
write(a[i],';');
end
else
begin
if len>=3 then
writeln;
len := 0;
end;
end;

writeln;
writeln('В массиве');
for i:= 1 to n do
write(a[i],';');
writeln;
writeln('Число серий Фибоначчи =', count);
readln;

end.
Неизвестный
13.12.2009, 23:20
общий
leonid59:
Добрый вечер, leonid59!!!!!Помогите пожалуйста,начал разбираться с задачкой которую вы мне помогли сделать,возникает ряд вопросов
1. Если ввожу в 1,1,2 то он считает то это серия и выдает её,а вот если ввожу на пример 3,5,8 то она мне ничего не говорит
2.Препод сказал что можно рассматривать один элемент как серию и если этот элемент принадлежит серии,то там уже анализировать
а как это всё сделать????
Неизвестный
14.12.2009, 08:31
общий
angel.nero:
Тогда давайте разбираться, что такое серия. Я предположил, что серия - это то, что начинается с первого элемента и
серия должна состоять как минимум из 3 чисел
. Поскольку Вы вносите уточнения, давайте вернемся к вопросу Boriss.
"Серия из чисел Фибоначчи" должна начинаться с 1?
. Далее. Считать ли серией наибольшую подпоследовательность чисел Фибоначчи? Например, какие, по-Вашему, здесь серии: 1,1,1,2,3?
Неизвестный
16.12.2009, 01:47
общий
1,1,2 и 1,2,3 я думаю так
Неизвестный
16.12.2009, 08:24
общий
angel.nero:
Доброе утро! Ответ на Ваш комментарий в мини-форуме вопроса 175215
Форма ответа