
Ayuda. Tengo una duda con mi programa.
Publicado por Jorge (1 intervención) el 25/10/2015 19:27:09
Hola. Buenas tardes. Me encuentro con una duda que tal vez sea bastante tonta pero que no me puedo sacar de la cabeza.
He hecho un programa en pascal el cual el enunciado decía lo siguiente:
"Dados 3 puntos del plano cartesiano:
(1.-) Hallar la suma de distancia entre cada par de puntos.
(2.-) Determinar si forman un triángulo rectángulo, en caso afirmativo hallar el área."
Mi problema es el siguiente; cuando le doy al programa los puntos en el plano cartesiano de un triangulo rectángulo, no me indica que lo sea sino que directamente me dice que no es un triángulo rectángulo.
Le he hecho corrida en frío y he tratado de codificarlo de una manera un poco diferente pero sigue en lo mismo. Intenté con P1(-5,6) P2(-5,3) y P(2,3) que son los puntos de un triángulo rectángulo.
Espero que puedan ayudarme a saber que estoy haciendo mal y si es un error lógico que tengo. Muchas gracias.
He hecho un programa en pascal el cual el enunciado decía lo siguiente:
"Dados 3 puntos del plano cartesiano:
(1.-) Hallar la suma de distancia entre cada par de puntos.
(2.-) Determinar si forman un triángulo rectángulo, en caso afirmativo hallar el área."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
program tres;
uses crt;
var x1,x2,x3,y1,y2,y3,a,b,c,area:real;
begin
clrscr;
writeln('Dame la abscisa del punto 1.');
readln(x1);
writeln('Dame la ordenada del punto 1.');
readln(y1);
writeln('Dame la abscisa del punto 2.');
readln(x2);
writeln('Dame la ordenada del punto 2.');
readln(y2);
writeln('Dame la abscisa del punto 3.');
readln(x3);
writeln('Dame la ordenada del punto 3.');
readln(y3);
a:=sqrt(sqr(x2-x1)+sqr(y2-y1)); {Distancia entre P1 y P2} {Lado a}
b:=sqrt(sqr(x3-x2)+sqr(y3-y2)); {Distancia entre P2 y P3} {Lado b}
c:=sqrt(sqr(x1-x3)+sqr(y1-y3)); {Distancia entre P3 y P1} {Lado c}
writeln('La suma entre las distancias de los puntos 1 y 2, y 2 y 3 es: ',a+b:0:2,' unidades.');
writeln('La suma entre las distancias de los puntos 2 y 3, y 3 y 1 es: ',b+c:0:2,' unidades.');
writeln('La suma entre las distancias de los puntos 3 y 1, y 1 y 2 es: ',c+a:0:2,' unidades.');
if (sqr(a)=sqr(b)+sqr(c)) then
begin
area:=b*c/2;
writeln('Es un triangulo rectangulo. Y tiene de area: ',area:0:2,' unidades.');
end
else if (sqr(b)=sqr(a)+sqr(c)) then
begin
area:=a*c/2;
writeln('Es un triangulo rectangulo. Y tiene de area: ',area:0:2,' unidades.');
end
else if (sqr(c)=sqr(a)+sqr(b)) then
begin
area:=a*b/2;
writeln('Es un triangulo rectangulo. Y tiene de area: ',area:0:2,' unidades.');
end
else
begin
writeln('No es un triangulo rectangulo.');
end;
readln;
end.
Mi problema es el siguiente; cuando le doy al programa los puntos en el plano cartesiano de un triangulo rectángulo, no me indica que lo sea sino que directamente me dice que no es un triángulo rectángulo.
Le he hecho corrida en frío y he tratado de codificarlo de una manera un poco diferente pero sigue en lo mismo. Intenté con P1(-5,6) P2(-5,3) y P(2,3) que son los puntos de un triángulo rectángulo.
Espero que puedan ayudarme a saber que estoy haciendo mal y si es un error lógico que tengo. Muchas gracias.
Valora esta pregunta


0