Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа на циклы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nik89
М
Теги !


Вот задача.Найти наименьший номер элемента последовательности,для которого выполняется условие 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я
While ABS(a[n]*a[n]-2)<E Do
Begin
Write(a[n],' ');
WriteLn;
n:=n+1;
End;

До этого цикла НЕ устанавливаешь n. Оно может быть равно чему угодно, например 10000
nik89
т.е. после a[1]:=1, For n:=2 to 10000 do не писать.Или я не так понял
Ozzя
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
Когда ввожу любое число(когда ввожу 2 то появляется одно значение) у меня выводит только 3 результата.Причём одно значение выводится раз 15, и наименьший номер элемента последовательности не выводится.Я походу вообще не так сделал и не так понял задание.Помогите.
Гость
И ещё в цикле While условие должно быть другое.Помогите
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.