IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Программа на циклы
nik89
сообщение 29.05.2007 9:59
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


М
Теги !


Вот задача.Найти наименьший номер элемента последовательности,для которого выполняется условие 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.


Сообщение отредактировано: klem4 - 31.05.2007 8:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 29.05.2007 10:04
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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

До этого цикла НЕ устанавливаешь n. Оно может быть равно чему угодно, например 10000
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nik89
сообщение 30.05.2007 21:03
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


т.е. после a[1]:=1, For n:=2 to 10000 do не писать.Или я не так понял
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 31.05.2007 8:10
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nik89
сообщение 31.05.2007 9:56
Сообщение #5





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


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

Сообщение отредактировано: nik89 - 31.05.2007 9:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 1.06.2007 18:25
Сообщение #6


Гость






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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2024 6:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"