Автор: GORBUNKI 13.04.2004 15:49
Помогите решить две задачи Пожалуйста:
1.Найти номер последнего отрицательного элемента в массиве.
2.Заполнить N элементов массива А числами Фибоначчи (первые два элемента равны 1, а каждое следующее - сумме двух предыдущих).
И Пожалуйста Обе
Автор: APAL 13.04.2004 15:59
1.
...
for i:=1 to Mmax do If m[i]<0 then k:=i;
Writeln('Последний отрицательный элемент под номером ',k,' и равен ',m[k]);
...
Автор: APAL 13.04.2004 16:01
2.
...
A[1]:=1; A[2]:=1;
For i:=3 to N do A[i]:=A[i-1]+A[i-2];
...
Автор: GORBUNKI 13.04.2004 16:43
Цитата
Помогите решить две задачи Пожалуйста:
1.Найти номер последнего отрицательного элемента в массиве.
2.Заполнить N элементов массива А числами Фибоначчи (первые два элемента равны 1, а каждое следующее - сумме двух предыдущих).
И Пожалуйста Обе
Только полностью решёные задачи, а то я в этом ничего не соображаю!
Автор: APAL 13.04.2004 18:01
Цитата(GORBUNKI @ 13.04.04 13:43)
Только полностью решёные задачи, а то я в этом ничего не соображаю!
1.Код
Const
Mmax:=20;
Var
i,k : Word;
m : array [1..Mmax] of Integer;
Begin
{Заполняем массив случ. числами от -200 до +200}
For i:=1 to Mmax do m[i]:=Round(Random(400)-200);
For i:=1 to Mmax do If m[i]<0 then k:=i;
Writeln('Последний отрицательный элемент под номером ',k,' и равен ',m[k]);
End.
P.S.: Программу писал прямо здесь. Т.е. я ее не проверял в работе...
Автор: APAL 13.04.2004 18:22
2.
Код
Const
N:=100;
Var
A : Array [1..N] of LongInt;
Begin
A[1]:=1; A[2]:=1;
For i:=3 to N do
Begin
A[i]:=A[i-1]+A[i-2];
Writeln(A[i]);
End;
End.
Автор: fms 14.04.2004 7:02
в первой задаче можно просто задом наперед массив просмотреть и до 1-ого отрицательного.. тогда немного быстрее..
Автор: AlaRic 14.04.2004 17:06
Оптимизация и устранение неточностей:
Код
Const
Mmax=20;
Var
i,k : Word;
m : array [1..Mmax] of Integer;
Begin
Randomize;
Clrscr;
{Заполняем массив случ. числами от -200 до +200}
For i:=1 to Mmax do m[i]:=Round(Random(400)-200);
For i:=Mmax downto 1 do If m[i]<0 then begin k:=i; break; end;
Writeln('Последний отрицательный элемент под номером ',k,' и равен ',m[k]);
End.
Автор: fms 15.04.2004 3:14
лучше вместо for'a while или repeat использовать.. из них лучше выходить в нужный момент..
Автор: APAL 16.04.2004 13:26
Да, оптимизация на лишняя...