A alguns anos fiz um exercicio em que pedia para classificar triangulos de acordo com os pontos dados como isosceles, equilatero, escaleno, retângulo, obtuso ou acutângulo.
Ver exercicio 6:
https://tivideotutoriais.blogspot.com/2020/03/exercicios-antigos-em-linguagem-c.html
Esse modelo mostra o tanto que era novato. Mas agora esse é atualizado, mas para linux:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{
double x;
double y;
} Ponto;
double semiPitagoras(Ponto p1, Ponto p2)
{
return (pow(p2.x-p1.x,2) + pow(p2.y-p1.y,2));
}
void triangulo(Ponto p1, Ponto p2, Ponto p3)
{
double A, B, C, ladoA, ladoB, ladoC;
char *Classe;
char *angulo;
A = semiPitagoras(p1, p2);
B = semiPitagoras(p2, p3);
C = semiPitagoras(p3, p1);
ladoA = sqrt(A);
ladoB = sqrt(B);
ladoC = sqrt(C);
printf("\n");
printf(" lado A = %.16lf\n", ladoA);
printf(" lado B = %.16lf\n", ladoB);
printf(" lado C = %.16lf\n", ladoC);
if((ladoA == ladoB+ladoC)||(ladoB == ladoC+ladoA)||(ladoC ==ladoB+ladoA))
{
printf("\nIsso nao e um triangulo\n");
exit(1);
}
if (ladoA == ladoB == ladoC)
{
Classe = "Equilatero";
}
else if((ladoA != ladoB)&&(ladoB != ladoC)&&(ladoC !=ladoA))
{
Classe = "Escaleno";
}
else
{
Classe = "Isosceles";
}
if (((B + C)==A)||((B + A)==C)||((A + C)==B))
{
angulo = "retangulo";
}
else if((A-B-C + 2*ladoC*ladoB <0)||(B-A-C + 2*ladoA*ladoB <0)||(C-B-A + 2*ladoC*ladoB <0))
{
angulo = "Obtusangulo";
}
else
{
angulo = "Acutangulo";
}
printf("\n Triangulo %s e %s.\n\n",Classe,angulo);
}
int main()
{
// coordenadas de cada
// ponto do triangulo
Ponto p1;
Ponto p2;
Ponto p3;
//equilatero acutangulo
p1.x=0.0; p1.y=sqrt(3.0)/2.0;
p2.x=0.5; p2.y=0.0;
p3.x=1.0; p3.y=sqrt(3.0)/2.0;
triangulo(p1,p2,p3);
//isosceles retangulo
p1.x=0.0; p1.y=0.0;
p2.x=0.0; p2.y=1.0;
p3.x=1.0; p3.y=0.0;
triangulo(p1,p2,p3);
//isosceles obtusangulo
p1.x=0.0; p1.y=0.0;
p2.x=1.0; p2.y=0.0;
p3.x=0.5; p3.y=0.2;
triangulo(p1,p2,p3);
//escaleno obtusangulo
p1.x=0.0; p1.y=0.0;
p2.x=1.0; p2.y=0.0;
p3.x=0.6; p3.y=0.2;
triangulo(p1,p2,p3);
return 0;
}
Nenhum comentário:
Postar um comentário