Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа на циклы
Форум «Всё о Паскале» > 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 условие должно быть другое.Помогите
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.