Собственно в теме написано,помогите,желательно без функций.
Сумма площадей 3х треугольников, основы которых стороны заданого, а вершина - т(0;0) должна быть равной площади заданого. Почему без функций? с ними намного короче! Один раз вбили Герона и Пифагора - и все.
Наверное, ты хотел написать > Задача в паскале.определить входит ли в треугольник с заданными координатами В начало координат.?
И я не совсем понял, а это как? Типа лежит ли одна его вершина в координате 0,0?
ну без функций потомучто препод потом спросит как я это делал)а я не знаю,картинку правильно нарисовал,можешь прогу написать?а то я с паскалем не дружу(
Ну до функций ты ведь знаешь? Вот и пиши. Если потом вдруг помирюсь с паскалем - напишу.
ну надеюс твой способ с площадями верный)постораюсь решить,спасибо.Но если сам сделаешь её напиши пожалуйста)
Сделаю сразу же после того как твой вариант увижу.
Вот оно, воплощение извращения))
var koor:array[1..6] of integer;
i,s:byte;
function chet(x,y:integer):byte;
begin
if (x>0) and (y>0) then chet:=1;
if (x>0) and (y<0) then chet:=2;
if (x<0) and (y<0) then chet:=3;
if (x<0) and (y>0) then chet:=4;
end;
begin
writeln('Vvedite koordinati vershini #1');
readln(koor[1],koor[2]);
writeln('Vvedite koordinati vershini #2');
readln(koor[3],koor[4]);
writeln('Vvedite koordinati vershini #3');
readln(koor[5],koor[6]);
if (chet(koor[1],koor[2])<>chet(koor[3],koor[4])) and
(chet(koor[3],koor[4])<>chet(koor[5],koor[6])) and
(chet(koor[1],koor[2])<>chet(koor[5],koor[6])) then writeln('YES, of course')
else writeln('NO, it isn"t');
readln;
end.
ух...спасибо.попробую,работает?)))
Ну да, тут за неработающее ругают) Только по логике моей программы если сторона лежит на оси координат, то начало координат не лежит в треугольнике..
Блиииин я забыл, сейчас переделаю..
Извращение, v.1.02
var koor:array[1..6] of integer;
i,s:byte;
function chet(x,y:integer):byte;
begin
if (x>0) and (y>0) then chet:=1;
if (x>0) and (y<0) then chet:=2;
if (x<0) and (y<0) then chet:=3;
if (x<0) and (y>0) then chet:=4;
end;
begin
writeln('Vvedite koordinati vershini #',1);
readln(koor[1],koor[2]);
writeln('Vvedite koordinati vershini #',2);
readln(koor[3],koor[4]);
writeln('Vvedite koordinati vershini #',3);
readln(koor[5],koor[6]);
if (chet(koor[1],koor[2])<>chet(koor[3],koor[4])) and
(chet(koor[3],koor[4])<>chet(koor[5],koor[6])) and
(chet(koor[1],koor[2])<>chet(koor[5],koor[6])) then writeln('YES, of course')
else
if (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=5)
or (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=7)
or (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=8)
or (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=10)
then writeln('YES, of course')
else writeln('NO,it isn"t...');
readln;
end.
or (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=7)
Эскизы прикрепленных изображений
всё, сдаюсь, Героны рулят))
ну напишите хотябы через функцию но рабочуюю блин!))
FATALITY!
var koor:array[1..6] of integer;
i,s:byte;
function chet(x,y:integer):byte;
begin
if (x>0) and (y>0) then chet:=1;
if (x>0) and (y<0) then chet:=2;
if (x<0) and (y<0) then chet:=3;
if (x<0) and (y>0) then chet:=4;
end;
begin
writeln('Vvedite koordinati vershini #',1);
readln(koor[1],koor[2]);
writeln('Vvedite koordinati vershini #',2);
readln(koor[3],koor[4]);
writeln('Vvedite koordinati vershini #',3);
readln(koor[5],koor[6]);
if (chet(koor[1],koor[2])<>chet(koor[3],koor[4])) and
(chet(koor[3],koor[4])<>chet(koor[5],koor[6])) and
(chet(koor[1],koor[2])<>chet(koor[5],koor[6])) then writeln('YES, of course')
else
if (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=5)
or ((chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=7)
and (chet(koor[1],koor[2])=1) or (chet(koor[3],koor[4])=1))
or (chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=8)
or ((chet(koor[1],koor[2])+chet(koor[3],koor[4])+chet(koor[5],koor[6])=10)
and (chet(koor[1],koor[2])=4) or (chet(koor[3],koor[4])=4))
then writeln('YES, of course')
else writeln('NO,it isn"t...');
readln;
end.
Что-то вы, мне кажется, тут перемудрили..
Простые решения уже не в моде?
И тут абсолютно не нужны никакие функции.
const
n=3; {треугольник}
r=9; {диапазон чисел}
var
t: array [1..n] of record
x,y: double;
end;
i: integer;
Inside: boolean;
u,v: double;
begin
Randomize;
for i:=1 to n do with t[i] do begin
x:=Random®*2-r;
y:=Random®*2-r;
WriteLn('x',i,'=',x:2:0,' y',i,'=',y:2:0);
end;
Inside:=true;
for i:=1 to n do begin
v:=t[i].x*t[i mod n+1].y-t[i].y*t[i mod n+1].x;
if i>1 then Inside:=Inside and (u*v>1e-15);
u:=v
end;
WriteLn(Inside)
end.
const
n=3; {треугольник}
r=9; {диапазон чисел}
var
t: array [1..n] of record
x,y: double;
end;
i: integer;
Inside: boolean;
u,v: double;
begin
Randomize;
for i:=1 to n do with t[i] do begin
x:=Random®*2-r;
y:=Random®*2-r;
WriteLn('x',i,'=',x:2:0,' y',i,'=',y:2:0);
end;
Inside:=true;
for i:=1 to n do begin
v:=t[i].x*t[i mod n+1].y-t[i].y*t[i mod n+1].x;
if i>1 then Inside:=Inside and (u*v>1e-15);
u:=v
end;
WriteLn(Inside)
end.
for i:=1 to n do with t[i] do begin
x:=Random®*2-r; { <--- }
y:=Random®*2-r; { <--- }
WriteLn('x',i,'=',x:2:0,' y',i,'=',y:2:0);
end;
for i:=1 to n do with t[i] do begin, теперь ошибки не будет. Integer вполне способен принимать отрицательные значения.
x:=Integer(Random®*2)-r; { <--- }
y:=Integer(Random®*2)-r; { <--- }
WriteLn('x',i,'=',x:2:0,' y',i,'=',y:2:0);
end;
теперь чтото не запускает %) что делать?((
все щикарно,спасибо огромное вам