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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.02.2009, 16:52   #1
Dialon
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 34
По умолчанию Проверьте задачу

Составить программу для вычисления значения выражения с использованием оператора For.
Program Task_4;
var y,i,h: Real;
y:=1;i:=-12; h:=0.1;
while i<=0 do
begin
y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
i:=i+0.1;
end;
write('y=',y:0:5);
readln;
end.
Пишет ошибка. error 4: duplicate identifier (y)
Dialon вне форума
Старый 10.02.2009, 17:03   #2
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

А где у вас первый begin?
pomoshnic вне форума
Старый 10.02.2009, 17:08   #3
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Цитата:
Составить программу для вычисления значения выражения с использованием оператора For.
а причем тут for? Используется цикл while...

Цитата:
Program Task_4;
var y,i,h: Real;
begin
y:=1;i:=-12; h:=0.1;
while i<=0 do
begin
y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
i:=i+0.1;
end;
write('y=',y:0:5);
readln;
end.
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума
Старый 10.02.2009, 17:31   #4
Dialon
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 34
По умолчанию

все равно не работает error 205: Floating point overflow
эту строчку показывает y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
Dialon вне форума
Старый 10.02.2009, 17:36   #5
Dialon
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 34
По умолчанию

А с for это так да
Program Task_4;
var y,i,h: Real;
begin
y:=1;i:=-12; h:=0.1;
for i<=0 do
y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
i:=i+0.1;
end;
write('y=',y:0:5);
readln;
end.
Dialon вне форума
Старый 10.02.2009, 17:38   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

потому что у вас "y" выходит за диапозон точности типа real, для "y" надо использовать тип extended, предварительно написав перед программой директиву подключения математического сопроцессора {$N+} - ваш "y" даже тип double не поддерживает с его двойной точностью , поэтому только тип extended
capta1n вне форума
Старый 10.02.2009, 17:45   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

c for у вас не получится, потому что приращение счетчика i идет не целое ( не на 1, а for работает только с целочисленными значениями в языке паскаль ), а приращение идет дробное на 0.1 - да и думаю что вот тут

Код:
i:=i+0.1;
написать надо
Код:
i:=i+h;
либо убрать неиспользующуюся переменную h и оставить все как есть
вот исправленная ваша программа
Код:
{$N+}
Program Task_4;
var
 i,h: Real;
 y : extended;
begin
  y:=1;i:=-12; h:=0.1;
  while i<=0 do
  begin
    y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
    i:=i+h;
  end;
  write('y=',y:0:5);
  readln;
end.

Последний раз редактировалось capta1n; 10.02.2009 в 17:47.
capta1n вне форума
Старый 10.02.2009, 18:31   #8
Dialon
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 34
По умолчанию

Cпасибо! Но нужно делать с for!, а будет правильно!
Program Task_4;
var P,i,: Real;
begin
P:=1
for i:=-12 to 0 do
P:=P*((i*i*i*i-pi)*(sin(5)/cos(5)));
end;
write('y=',y:0:5);
readln;
end.
Dialon вне форума
Старый 10.02.2009, 18:33   #9
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Цитата:
А с for это так да
Program Task_4;
var y,i,h: Real;
begin
y:=1;i:=-12; h:=0.1;
for i<=0 do
y:=y*((i*i*i*i-pi)*(sin(5)/cos(5)));
i:=i+0.1;
end;
write('y=',y:0:5);
readln;
end.
Мде... Полистайте учебник по Паскалю... Если вы этот код "скопипастили", даже не надейтесь на то, чтобы у вас что-то заработало)
И, как уже сказали, изменение i идет только целочисленно...
Ну и наконец:
Код:
var i: integer;
begin
for i:= выражение-1 to выражение-2 do
  цикл
end;
Код:
 while условие do
 цикл
Опять
Цитата:
Program Task_4;
var P,i,: Real;// Запятая ни к чему
begin
P:=1; // Нет ;
for i:=-12 to 0 do // Бред, i: real!
P:=P*((i*i*i*i-pi)*(sin(5)/cos(5)));
end; //Лишнее
write('y=',y:0:5);
readln;
end.
Кто бы ты ни был - не думай о себе слишком (с)

Последний раз редактировалось DM_bite; 10.02.2009 в 18:46.
DM_bite вне форума
Старый 10.02.2009, 20:27   #10
Dialon
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 34
По умолчанию

Не могу понять почему теперь ошибку выдает
Program Task_4;
var P,i: Integer;
begin
P:=1
for i:=-12 to 0 do // error 85:';' expected
P:=P*((i*i*i*i-pi)*(sin(5)/cos(5)));
write('y=',y:0:5);
readln;
end.

Последний раз редактировалось Dialon; 10.02.2009 в 20:29.
Dialon вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте задачу на стоки! Dremgor Помощь студентам 1 29.12.2008 21:45
Проверьте выражение fosto Помощь студентам 2 15.12.2008 22:58
Проверьте плиз задачу rainbow Паскаль, Turbo Pascal, PascalABC.NET 0 04.12.2008 12:51
Проверьте пожалуйста.. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 0 24.11.2008 01:39
Проверьте ReM Общие вопросы Delphi 1 12.11.2008 17:32