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

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

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

Автор: Solymr 31.05.2007 18:56

есть задание, получилась такая программа.
program figura;
const dx=0.5;
dy=0.4;
var x,y: real;
obl1,obl2,obl3,obl4: boolean;
count: integer;
begin
x:=-3.5;
count:=0;
while x<2.5 do
begin
y:=-3.6;
while y<2.4 do
begin
obl1:=(x>=-3) and (x<=-1)and (y<-x-2) and (y>-3);
obl2:=(x>-1) and (x<=0) and (y>-3) and (y<x);
obl3:=(x>=0) and (x<=1) and (y<1) and (y>-sqrt(4-sqr(x)));
obl4:=(x<=2) and (x>1) and (y<x) and (y>-sqrt(4-sqr(x)));
if obl1 or obl2 or obl3 or obl4 then
begin
write('(',x:2:1,',',y:2:1,')',';');
inc(count);
if not odd(count) then
writeln;
end;

y:=y+dy;
end;
x:=x+dx;
end;
readln;
end.
но правильные точки не выводятся, что не так, кто подскажет?



Прикрепленные файлы
Прикрепленный файл  Document1.rar ( 40.84 килобайт ) Кол-во скачиваний: 182

Автор: Ozzя 31.05.2007 19:04

if obl1 or obl2 or obl3 or obl4 then
А ПОЧЕМУ or?
and не пробовал поставить?

Автор: Solymr 31.05.2007 19:32

если ставлю and вообще ничего не выходит

Автор: volvo 31.05.2007 19:51

Цитата
правильные точки не выводятся

А вот так?

program figura;
const
dx=0.5;
dy=0.4;

var
x,y: real;
obl1,obl2,obl3,obl4, obl5: boolean;
count: integer;

begin
x := -3.5;
count := 0;
while x < 2.5 do begin
y := -3.6;
while y < 2.4 do begin

obl1 := (x >= -3) and (x <= 0) and (y < (-x-2)) and (y >= -3);
obl2 := (x >= -1) and (x <= 0) and (y >= -3) and (y <= x);
obl3 := (x >= 0) and (x <= 1) and (y >= 0) and (y <= 1) and (y >= x);
obl4 := (x >= 0) and (x <= 2) and (y >= 0) and (y <= x);
obl5 := (x >= 0) and (x <= 2) and (y <= 0 ) and (y >= -2) and (sqr(x) + sqr(y) <= 4);

if obl1 or obl2 or obl3 or obl4 or obl5 then begin
write('(',x:2:1,',',y:2:1,')',';');
inc(count);
if not odd(count) then writeln;
end;

y:=y+dy;
end;

x:=x+dx;
end;
readln;
end.

Автор: Solymr 31.05.2007 20:04

все равно не те координаты выводит. Может в самой программе что-то не так, а не в областях?

Автор: мисс_граффити 31.05.2007 20:11

Цитата
А ПОЧЕМУ or?

Потому что достаточно попадания в одну из областей.


КАКИЕ точки не вывелись, хотя должны были? Можно КОНКРЕТНЫЕ координаты?

Автор: Solymr 31.05.2007 20:27

(-3;0);(-3;-3);(-1,4;-1,4);(-2;0);(-1;-1);(0;-3);(-3;1);(0;0);(0;1);(1;1);(2;2);(1,4;1,4)
вот эти не знаю как вывести

Автор: volvo 31.05.2007 20:40

Цитата
вот эти не знаю как вывести
Никак ты их с заданным тобой шагом не выведешь... Думать разучился совсем? Что , если ты начинаешь от -3.6 и шаг = 0.4, то у тебя есть шанс попасть в -3.0?

P.S. Если ты запускал мою программу, то должен был видеть, что все, куда можно добраться, например, (-3, 0), она печатает...

Автор: Solymr 1.06.2007 0:53

да, спасибо, че-то я сглупил.