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

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

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

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

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

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

вот есть такая задачка

Код:
begin
repeat
readln(x);
if x>0 then 
begin
s:=1;
for i:=1 to 11 do begin
i:=i+1;
r:=x-2i;
s:=s*r;
end;
writeln(s:6:3);
end;
until(x<o)or(x=0);
нужно поменять цикл фор, на репеат, а цикл репеат на вайл
вот что у меня получилось

Код:
begin
readln(x);
while (x>0)or(x<>0) do
begin
s:=1;
i:=1;
repeat
I:=1+i;
r=(x-2i);
s=s*r;
until i=11;
writeln(s:3:2);
end;
end;
но программа почему то зациклилась... может подскажете в чем ошибка?

Последний раз редактировалось Stilet; 12.05.2010 в 16:29.
SkyL1ne вне форума Ответить с цитированием
Старый 12.05.2010, 10:22   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Чему равен х в момент
while (x>0)or(x<>0) do ?
И далее х нигде не изменяется. В for переменная цикла получает приращение автоматически, а здесь ты должен ручками приращивать.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.05.2010, 10:26   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

while (x>0)or(x<>0) do
вообще не понятный цикл
Не проще на неравенство только проверять?
danekne вне форума Ответить с цитированием
Старый 12.05.2010, 10:29   #4
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
while (x>0)or(x<>0) do
вообще не понятный цикл
Не проще на неравенство только проверять?
то есть только х=<0

Последний раз редактировалось SkyL1ne; 12.05.2010 в 10:34.
SkyL1ne вне форума Ответить с цитированием
Старый 12.05.2010, 10:36   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

То есть если х>0, то само собой он нулю не равен. А если он нулю не равен, то уже по фигу больше он нуля или меньше. Сработает все равно. Смысл ясен?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.05.2010, 10:38   #6
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

то есть я ввожу х=10 например, условие истинно и он выходит?

ничего не понимаю(
все равно программа зацикливаеться

Последний раз редактировалось Stilet; 12.05.2010 в 16:26.
SkyL1ne вне форума Ответить с цитированием
Старый 12.05.2010, 10:44   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Да условие истино хоть при х=10, хоть при х=-10
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.05.2010, 10:48   #8
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

вы меня не поняли) мне нужно что бы цикл вайл, хотя бы выполнился один раз)
SkyL1ne вне форума Ответить с цитированием
Старый 12.05.2010, 10:50   #9
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Да у тебя и первая версия зацикливается.
Первая вообще какая-то странная. Вводиться X от которого ничего не зависит, кроме выхода из цикла.
Но тем не менее держи оба варианта

Код:
program Laba1;
var
 x,s,i,r : integer;
begin
r := 2;
repeat
readln(x);
if x>0 then
 begin
 s:=1;
 for i:=1 to 11 do begin s:=s*r; end;
 writeln(s:6);
 end;
until x<0 ;
end.

program Laba2;
var
 x,s,i,r : integer;
begin
r:=2;
readln(x);
while x>0 do
 begin
 s:=1;i:=1;
 repeat
  r := (x-2*i);
  s := s*r;
  i := i + 1;
 until i>10;
writeln(s:3);
readln(x);
end;
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 12.05.2010, 10:50   #10
SkyL1ne
Пользователь
 
Аватар для SkyL1ne
 
Регистрация: 24.12.2009
Сообщений: 34
По умолчанию

точнее цикл и должен выполниться один раз
SkyL1ne вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход из цикла Сергей089 Помощь студентам 6 17.03.2010 16:44
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Операторы цикла Paul Oakenfold Паскаль, Turbo Pascal, PascalABC.NET 4 14.04.2009 19:28
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10