Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Циклическая программа

Автор: ElementQQ 9.10.2016 22:06

функция: "H=√(p+|a^2+b^3 |) + √(a/(p+1))" с интервалом: "X/2=p<Y (Pascal ABC)

Вот что пытался сделать я (сори если очень криво, неделю назад впервые увидел паскаль, а в гугле обьяснения проблемы не нашел)

Program A123;
var
a,b,X,Y,interval,p:integer;
sum,REZ:real;
begin
writeln('Enter variabiles a and b:');
readln(a,b);
writeln('Enter interval min 13 X/2=p<Y :');
readln(X,Y);
for p:=X/2 to p<Y do
begin

REZ:=sqrt(p+abs(sqr(a)+exp(3*ln(b))))+sqrt(a/p+1);
writeln('-',p,'-',REZ);

interval:=interval+1;
sum:=sum+REZ;

end;

writeln('Total interval element:',interval);
writeln('Total REZ:',sum);

end.


ошибка: нельзя преобразовать тип boolean к integer (строка 10)
варнинг: параметр цикла for должен описываться в заголовке цикла (строка 10)

Автор: Федосеев Павел 10.10.2016 12:59

Цикл for - цикл с параметром, когда нужно сделать ровно N итераций.
В вашем случае, нужно применить цикл while.

Автор: ElementQQ 11.10.2016 0:30

Цитата(Федосеев Павел @ 10.10.2016 12:59) *

Цикл for - цикл с параметром, когда нужно сделать ровно N итераций.
В вашем случае, нужно применить цикл while.


Но если делать через while, то p нужно делать string либо char, а у меня X/2=p, а это в свою очередь real.

Автор: OCTAGRAM 11.10.2016 0:53

Никак не связан while со string и char.

Если for по–каким–то причинам нужно переписать на while, выглядит это примерно так:

I := Start;
while I <= Finish do
begin
{ ... }

I := I + Delta;
end;


Где I — переменная, по которой делается цикл, Start и Finish — границы диапазона, а Delta — шаг изменения I.