иван 23
Сообщение
#46988 8.12.2009, 11:19
дано: E(эпсилон)=115В, r=29,7 Ом. формула P=R*SQR(E/R+r) при R=10,20,30,40,50,100,150,200,250,300
надо с while и repeat, в этом и возникли затруднения
граф Монте-Кристо
Сообщение
#46989 8.12.2009, 11:26
Что конкретно не получается? Программа не запускается, или Вы не можете составить алгоритм?
иван 23
Сообщение
#46996 8.12.2009, 11:53
вот мои наработки:
const
E=115;
r=29.7;
var
RR,i:integer;
P:real;
begin
for i:=1 to 10 do
begin
if i<6 then RR:=i*10 else RR:=(i-5)*50+50;
P:=RR*SQR(E/RR+r);
write(P:10:2);
end;
readln;
end.
но поскольку это цикл с пост и предусловием, надо ведь while и repeat, вот я и не знаю куда их поставить и как записать
вот мои наработки:
const
E=115;
r=29.7;
var
RR,i:integer;
P:real;
begin
for i:=1 to 10 do
begin
if i<6 then RR:=i*10 else RR:=(i-5)*50+50;
P:=RR*SQR(E/RR+r);
write(P:10:2);
end;
readln;
end.
но поскольку это цикл с пост и предусловием, надо ведь while и repeat, вот я и не знаю куда их поставить и как записать
Julia
Сообщение
#47000 8.12.2009, 15:11
Цикл с предусловием используется, когда известно условие продолжения цикла. Пока при некоторых значениях входящих в условие перменных условие остается истинным, выполняется тело цикла. Как только условие стоновится ложным, работа оператора цикла прекращается.
Вам необходимо составить условие, при котором все описанные вами действия будут выполняться. Можно задействовать имеющуюся переменную i, добавить в программу всего 2 строчки и одну изменить. Не забывайте, что внутри цикла обязательно должен быть хотя бы один оператор, влияющий на условие продолжения цикла.
иван 23
Сообщение
#47080 9.12.2009, 8:35
вы бы могли помочь добавить эти строчки и изменить одну, нужно эту задачу решить именно через while, untill и repeat. а как это сделать я не понял
Julia
Сообщение
#47082 9.12.2009, 9:14
Вот ваше тело цикла:
begin
if i<6 then RR:=i*10 else RR:=(i-5)*50+50;
P:=RR*SQR(E/RR+r);
write(P:10:2);
end;
Выбор оператора цикла на него существенно не влияет.
На какую переменную, входящую в тело цикла, и какие ограничения можно наложить так, чтобы она удовлетворяла условиям задачи?
иван 23
Сообщение
#47083 9.12.2009, 9:28
на R можно наложить кажется. по-моему первый цикл должен R<RR как то, а второй R>RR.
Julia
Сообщение
#47086 9.12.2009, 10:01
R у вас константа 29,7. Для того чтобы на входе в цикл проверить условие R<RR необходимо будет задать начальное значение переменной RR. Даже если вы возьмете значение заведомо большее 29,7, то уже при следующем проходе RR=10 окажется меньше 29,7, т.е.условие R<RR окажется ложным и цикл прекратит свою работу.
Попробуйте наложить ограничения на переменную i.
иван 23
Сообщение
#47091 9.12.2009, 10:44
покажите пожалуйста, ниче не получается у меня((
Julia
Сообщение
#47115 9.12.2009, 15:18
мда...условие-то элементарное i<=10
иван 23
Сообщение
#47185 10.12.2009, 10:39
Юленька, а как в общем виде программа выглядеть будет тогда?)
Julia
Сообщение
#47360 11.12.2009, 6:54
const
E=115;
r=29.7;
var
RR,i:integer;
P:real;
begin
i:=1;
while i<=10 do
begin
if i<6 then RR:=i*10 else RR:=(i-5)*50+50;
P:=RR*SQR(E/RR+r);
write(P:10:2);
inc(i)
end;
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.