Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программа на циклы

Автор: nik89 29.05.2007 13:59

М
Теги !


Вот задача.Найти наименьший номер элемента последовательности,для которого выполняется условие M.Вывести на экран этот номер и все элементы a[i],где i=1,2,...n.
a[n]=1/2(a[n-1]+2/a[n-1]),a[1]=1,M:модуль(a[n]*a[n]-2)<E.Ввод E с клавиатуры.
Вот я что то написал,но она работает не так.Помогите.

program cikl;
Var
E,S:Real;
n:Integer;
a:array[1..10000] Of Real;
Begin
WriteLn('Vvedite epsil');ReadLn(E);
a[1]:=1;
For n:=2 to 10000 do
a[n]:=1/2*(a[n-1]+2/a[n-1]);
While ABS(a[n]*a[n]-2)<E Do
Begin
Write(a[n],' ');
WriteLn;
n:=n+1;
End;
S:=a[1];
For n:=2 to 10000 do
If a[n]<S Then
Write(n);
End.

Автор: Ozzя 29.05.2007 14:04

While ABS(a[n]*a[n]-2)<E Do
Begin
Write(a[n],' ');
WriteLn;
n:=n+1;
End;

До этого цикла НЕ устанавливаешь n. Оно может быть равно чему угодно, например 10000

Автор: nik89 31.05.2007 1:03

т.е. после a[1]:=1, For n:=2 to 10000 do не писать.Или я не так понял

Автор: Ozzя 31.05.2007 12:10

For n:=2 to 10000 do
a[n]:=1/2*(a[n-1]+2/a[n-1]);
{ Вот здесь у тебя отработал предыущий цикл. Возможно, n=10000, а, возможно в n - мусор}
{ А здесь начинается новый цикл. Должен начаться с единицы. А начнется, хз, с чего}
n:=1; // что должно было стоять
While ABS(a[n]*a[n]-2)<E Do
Begin
Write(a[n],' ');
WriteLn;
n:=n+1;
End;

Автор: nik89 31.05.2007 13:56

Когда ввожу любое число(когда ввожу 2 то появляется одно значение) у меня выводит только 3 результата.Причём одно значение выводится раз 15, и наименьший номер элемента последовательности не выводится.Я походу вообще не так сделал и не так понял задание.Помогите.

Автор: Гость 1.06.2007 22:25

И ещё в цикле While условие должно быть другое.Помогите