дано: E(эпсилон)=115В, r=29,7 Ом. формула P=R*SQR(E/R+r) при R=10,20,30,40,50,100,150,200,250,300
надо с 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, вот я и не знаю куда их поставить и как записать
вот мои наработки:
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, вот я и не знаю куда их поставить и как записать
Цикл с предусловием используется, когда известно условие продолжения цикла. Пока при некоторых значениях входящих в условие перменных условие остается истинным, выполняется тело цикла. Как только условие стоновится ложным, работа оператора цикла прекращается.
Вам необходимо составить условие, при котором все описанные вами действия будут выполняться. Можно задействовать имеющуюся переменную i, добавить в программу всего 2 строчки и одну изменить. Не забывайте, что внутри цикла обязательно должен быть хотя бы один оператор, влияющий на условие продолжения цикла.
вы бы могли помочь добавить эти строчки и изменить одну, нужно эту задачу решить именно через while, untill и repeat. а как это сделать я не понял
Вот ваше тело цикла:
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;
Выбор оператора цикла на него существенно не влияет.
На какую переменную, входящую в тело цикла, и какие ограничения можно наложить так, чтобы она удовлетворяла условиям задачи?
на R можно наложить кажется. по-моему первый цикл должен R<RR как то, а второй R>RR.
R у вас константа 29,7. Для того чтобы на входе в цикл проверить условие R<RR необходимо будет задать начальное значение переменной RR. Даже если вы возьмете значение заведомо большее 29,7, то уже при следующем проходе RR=10 окажется меньше 29,7, т.е.условие R<RR окажется ложным и цикл прекратит свою работу.
Попробуйте наложить ограничения на переменную i.
покажите пожалуйста, ниче не получается у меня((
мда...условие-то элементарное i<=10
Юленька, а как в общем виде программа выглядеть будет тогда?)
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.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)