uses crt;
var a,b,r,x,y,N,z:real;
begin
clrscr;
Write ('Vvedite kol-vo probnyh tochek ');
readln(N);
writeln('Vvedite radius okuzhnosti');
readln ®;
writeln ('Vvedite krainuyuy x pryam.');
readln(a);
writeln ('Vvedite krainuyuy y pryam.');
readln(b);
z:=1;
while z<=N DO
BEGIN
z:=z+1;
Writeln ('Vvedite x i y');
readln(x,y);
END;
writeln;
repeat
begin
z:=z+1;
if (x<0) and (x>(-a)) and (y<0) and (sqrt(sqr(x)+sqr(y))<=r) then
writeln (x:2:2,' ',y:2:2,' ','Popapla')
else
if (x>0) and (x<a) and (y>0) and (sqrt(sqr(x)+sqr(y))>=r) then
writeln (x:2:2,' ',y:2:2,' ','Ne popala')
else writeln (x:2:2,' ',y:2:2,' ','Ne popala');
end;
UNTIL z=N;
readkey;
end.
uses crt;
var a,b,r,x,y,N,z:real;
begin
clrscr;
Write ('Vvedite kol-vo probnyh tochek ');
readln(N);
writeln('Vvedite radius okuzhnosti');
readln ®;
writeln ('Vvedite krainuyuy x pryam.');
readln(a);
writeln ('Vvedite krainuyuy y pryam.');
readln(b);
z:=1;
while z<=N DO
BEGIN
z:=z+1;
Writeln ('Vvedite x i y');
readln(x,y);
END;
writeln;
repeat
begin
z:=z+1;
if (x<0) and (x>(-a)) and (y<0) and (sqrt(sqr(x)+sqr(y))<=r) then
writeln (x:2:2,' ',y:2:2,' ','Popapla')
else
if (x>0) and (x<a) and (y>0) and (sqrt(sqr(x)+sqr(y))>=r) then
writeln (x:2:2,' ',y:2:2,' ','Ne popala')
else writeln (x:2:2,' ',y:2:2,' ','Ne popala');
end;
UNTIL z=N;
readkey;
end.
Мне надо, чтобы обязательно было два цикла: while и repeat. А массивы мы еще не проходили.
У меня через час пара начнется. Это нереально пройти. Помогите, пожалуйста, очень надо сдать эту программу.
Хотя бы с массивами, пожалуйста. Я не очень понимаю Паскаль над программой 3 дня сидел, с циклами разбирался.
http://pikucha.ru/i4MnU
Программа должна определять попадает ли точка в закрашенную область, результатаы вывести в вдие таблицы. Она в ней должна быть возможность выполняться много раз, не перезапускаясь, это я вообще не понял. Обязательно должны быть условный оператор, цикл с предусловием и постусловием.
Вот, я вставил массивы (x и y)
параметр цикла заменил на целую переменную (i)
также, подправил границы циклов
Но у тебя там с логикой швах. Неясно, зачем весь этот наворот:
if (x[i]>0) and (x[i]<a) and (y[i]>0) and (sqrt(sqr(x[i])+sqr(y[i]))>=r) then- если в обоих случаях выводится одно и то же..
writeln (x[i]:2 :2,' ',y[i]:2 :2,' ','Ne popala')
else writeln (x[i]:2 :2,' ',y[i]:2 :2,' ','Ne popala');
const
m = 100;
var
a,b,r,N: real;
i: integer;
x,y: array [1..m] of real;
begin
Write ('Vvedite kol-vo probnyh tochek (ne boljshe ',m,'): ');
readln(N);
writeln('Vvedite radius okuzhnosti');
readln ®;
writeln ('Vvedite krainuyuy x pryam.');
readln(a);
writeln ('Vvedite krainuyuy y pryam.');
readln(b);
i:= 0;
while i<N DO BEGIN
i:= i+1;
Writeln ('Vvedite x i y');
readln(x[i],y[i]);
END;
writeln;
i:= 0;
repeat
i:= i+1;
if (x[i]<0) and (x[i]>-a) and (y[i]<0) and (sqrt(sqr(x[i])+sqr(y[i]))<=r) then
writeln (x[i]:2 :2,' ',y[i]:2 :2,' ','Popapla')
else
if (x[i]>0) and (x[i]<a) and (y[i]>0) and (sqrt(sqr(x[i])+sqr(y[i]))>=r) then
writeln (x[i]:2 :2,' ',y[i] 2,' ','Ne popala')
else writeln (x[i]:2 :2,' ',y[i]:2 :2,' ','Ne popala');
UNTIL i=N;
readln;
end.
Огромное вам спасибо!
Вот тебе решение:
uses CRT;
var
a,b,r,x,y,z: real;
c: char;
begin
writeln('Vvedite radius okuzhnosti');
readln ®;
writeln ('Vvedite krainuyuy x pryam.');
readln(a);
writeln ('Vvedite krainuyuy y pryam.');
readln(b);
repeat
Write ('Vvedite x i y: ');
readln(x,y);
z:= sqrt(sqr(x)+sqr(y));
if
(-a<=x) and (x<=0) and (-b<=y) and (y<=0) and (z<=r)
or
(0<=x) and (x<=a) and (0<=y) and (y<=b) and (z>=r)
then
writeln (x:2:2,' ',y:2:2,' ','Popapla')
else
writeln (x:2:2,' ',y:2:2,' ','Ne popala');
write('Prodolzhitj? (y/n) ');
c:= #0;
while not (c in ['Y','N']) do c:= UpCase(ReadKey);
WriteLn
UNTIL c='N';
WriteLn('Good bye!')
end.