Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 23:02   #1
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию Цикл в цикле

Попалась задача, вот такая "Последовательно вводятся вещественные числа. Признаком окончания ввода является отрицательное число или ноль. Вычислить (х-2)(х-4)(х-6)...(х-22) для каждого из х"

Не могу понять как образовать цикл в цикле, во внутреннем цикле использую оператор FOR, все время получается выполнить задачу для одного из Х, используя условие что Х>0

Какие лучше использовать операторы, или как решить задачу, могу написать часть программы, если кто не понял в чем трудность.
SkyL1ne вне форума Ответить с цитированием
Старый 01.04.2010, 23:42   #2
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

Вот часть программы

readln(x);
writeln(x);
s:=1;
n:=0;
For I:=1 to 11 do
begin
n:=n+1;
r:=(x-2*n);
s:=s*r;
end;

с помощью этой программы я считаю для одного из Х, посоветуйте, какой оператор использовать что бы вычислять, для каждого из Х>0, вводимых с клавиатуры,

Последний раз редактировалось SkyL1ne; 02.04.2010 в 00:54.
SkyL1ne вне форума Ответить с цитированием
Старый 02.04.2010, 00:38   #3
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Как на счет того, чтобы ограничить тело цикла операторными скобками begin и end для начала? Иначе в этом цикле будет выполняться единственный оператор присваивания n:=n+1.
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 02.04.2010, 00:53   #4
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

исправил .
SkyL1ne вне форума Ответить с цитированием
Старый 02.04.2010, 01:07   #5
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Можно просто заставить пользователя ввести число больше нуля:
repeat
readln(x)
until x > 0;
И весь код в еще один цикл поместить. В любой - хоть while, хоть repeat.
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 02.04.2010, 01:11   #6
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
Можно просто заставить пользователя ввести число больше нуля:
repeat
readln(x)
until x > 0;
И весь код в еще один цикл поместить. В любой - хоть while, хоть repeat.
я понимаю что можно так, но если так выполнить, то мы высчитаем для одного х, а в условии не сказано сколько нужно ввести
SkyL1ne вне форума Ответить с цитированием
Старый 02.04.2010, 07:20   #7
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Цитата:
Сообщение от SkyL1ne Посмотреть сообщение
я понимаю что можно так, но если так выполнить, то мы высчитаем для одного х, а в условии не сказано сколько нужно ввести
В данном случае внутренний цикл лучше оформить как подпрограмму.
Serebro вне форума Ответить с цитированием
Старый 02.04.2010, 07:36   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
И весь код в еще один цикл поместить. В любой - хоть while, хоть repeat.
Здесь нужен цикл только с предусловием. Изначально пользователь может ввести либо 0, либо отрицательное число, что должно прекратить выполнение программы... Т.е. использовать только while, но не repeat! И вообще зачем там цикл, который будет выполняться то всего один раз? Достаточно просто условного оператора...

Код:
repeat
readln(x);
if X>0 then
  begin
    s:=1;
    n:=0;
    for I:=1 to 11 do
      begin
        n:=n+1;
        r:=(x-2*n);
        s:=s*r;
      end
until X>0
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 02.04.2010 в 07:44.
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл в цикле (Си++) ConChita Помощь студентам 2 11.03.2010 09:13
Цикл в цикле... Davlet M Помощь студентам 6 25.01.2010 01:42
Цикл в цикле и циклом погоняет... Guguzjaka Помощь студентам 5 27.11.2009 18:17
Составить программу вычисления значений функций, используя приём "цикл в цикле" Chaynik011091 Помощь студентам 5 22.06.2009 21:33