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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 20:46   #1
DsDevis
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 35
По умолчанию Проблема с циклом

Доброго дня.
Помогите разобраться пожалуйста с этим заданием.

вот мой код:
Код:
PROGRAM evgen_2;
var
x, y, e: integer;
l, t, d, p1, p2, ch, zn,sum, pro: real;
begin
write ('x= ');
readln (x);
write ('y= ');
readln (y);
write ('e= ');
readln (e);
if x>y then
       begin
       ch:=10*y-(exp(ln(e)*x))*ln(exp(ln(x)*5));
       p1:=8*sqr(sin(x)/cos(x));
       p2:=cos(x+y)/sin(x+y);
       zn:=sqrt(p1-p2);
       l:=ch/zn;
       writeln ('L= ',l:1:4);
       end
else
       begin
       t:=0; sum:=0; pro:=0;
       repeat
             begin
             d:=(t*cos(x+y))/(t+1);
             if d>0 then
                sum:=sum+d;
             if d<0 then
                pro:=pro*d;
             t:=t+0.5;
             end;
             until t=10;
             writeln ('сумма= ',sum:1:3);
             writeln ('произведение= ',pro:1:3);
       end;
       readln;
end.
Проблема в выделенном участке, программа их пропускает при обходе по F8. Где я ошибся?
если переместить строки в выделенном участке вот таким образом:
Код:
]if d>0 then sum:=sum+d;
             if d<0 then pro:=pro*d;
тогда при выводе sum и pro они оба становятся равны нулям. Где же косяк?

Последний раз редактировалось DsDevis; 21.01.2011 в 21:52. Причина: upd
DsDevis вне форума Ответить с цитированием
Старый 21.01.2011, 23:03   #2
Shift_sk
Форумчанин
 
Регистрация: 20.11.2010
Сообщений: 221
По умолчанию

Код:
 t:=0;
d:=(t*cos(x+y))/(t+1);
у тебя d всегда равно нулю!!!!
www.bezperepl.at.ua
Код:
...
Shift_sk вне форума Ответить с цитированием
Старый 22.01.2011, 00:18   #3
DsDevis
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 35
По умолчанию

а как же
Код:
t:=t+0.5;
?
В условии задачи t шагает от 0 до 10. В первом прогоне цикла оно должно становиться равным 0,5, разве нет?
UPD
На соседнем форуме подсказали pro приравнять в единице, косячок, который я не заметил ранее.

Последний раз редактировалось DsDevis; 22.01.2011 в 00:25. Причина: upd
DsDevis вне форума Ответить с цитированием
Старый 22.01.2011, 07:14   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

t:=0; sum:=0; pro:=1;
puporev вне форума Ответить с цитированием
Старый 22.01.2011, 09:10   #5
DsDevis
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 35
По умолчанию

Спасибо. При таком раскладе вроде работает.
Непонятно еще одно. при прогоне по Ф8 в первый виток цикла в строке
Код:
d:=(t*cos(x+y))/(t+1);
возникает ошибка 205, как такое может быть, если при первом витке это выражение = 0?
DsDevis вне форума Ответить с цитированием
Старый 22.01.2011, 09:51   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
d:=(t*cos(x+y))/(t+1);
             if d>0 then
                sum:=sum+d;
             if d<0 then
А если d=0 при t=0?
puporev вне форума Ответить с цитированием
Старый 22.01.2011, 22:51   #7
DsDevis
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 35
По умолчанию

Спасибо. Добавил в условие
Код:
if d=0 then sum:=sum+0;
Поведение цикла стало вменяемым, но при многократной прогонке по Ф8 печатаются разные результаты sum и pro. Может быть тупит scholl pack, у меня win7x64. Попробую на другой машине с ХР.
DsDevis вне форума Ответить с цитированием
Старый 23.01.2011, 07:11   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
if d=0 then sum:=sum+0;
А не проще тогда
Код:
if d>=0 then
                sum:=sum+d;
puporev вне форума Ответить с цитированием
Старый 24.01.2011, 00:01   #9
DsDevis
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 35
По умолчанию

Я пробовал так на school pack, цикл сходил с ума, на машине с ХР и нормальным ТП7 все идет на ура. Спасибо всем за помощь.
DsDevis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с циклом kiborgdelto Помощь студентам 1 16.10.2010 19:46
проблема с циклом Dima_D Общие вопросы Delphi 5 04.08.2010 16:41
Непонятная проблема с циклом RIO Общие вопросы Delphi 3 31.01.2010 23:29
Проблема с циклом, Паскаль Паскалька^^ Помощь студентам 2 10.12.2009 15:37
Проблема с циклом.. POPOV Помощь студентам 3 29.04.2008 18:36