Ir para conteúdo
Fórum Script Brasil
  • 0

DESAFIO DE NOVATO


Joow

Pergunta

Bom galera é u seguinte o meu prof. pediu para q criasemos um prog em C onde teriamos q :

1- Descobrir se 3 lados de retas formariam um triangulo !

Procurando no Google achei q para isso basta saber se 1 dos lados é menor q a soma dos outros 2 ( lado1 < lado2+lado3)

2 - Se as retas formam um triangulo calcular sua área !

Novamente no Google achei esta formula area = raiz quadrada de ( p * (p-lado1) * (p-lado2) * (p-lado3)) onde p é o semi-perimetro, ou seja, p= lado1+lado2+lado3/2

3- Apartir destes dados mostrar na tela se as retas formam um triangulo se sim mostrar na tela a area do triangulo, o semi-perimetro do msmO, e se ele é equilatero ( todos os lados iguais), isoceles (apenas 2 lados iguais), ou escaleno ( nenhum lado igual).

4- Apos o fim deste perguntar ao usuario se gostaria de recomeçar o programa !

Com isso consegui chegar a este codigo:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

void main ()
{
    float l1,l2,l3,p,area;
    int cont;
    
    do
    {
        clrscr();
        
        printf("\nDigite o tamanho da 1ª reta:\n");
        scanf("%0.2f",&l1);
        printf("\nDigite o tamanho da 2ª reta:\n");
        scanf("%0.2f",&l2);
        printf("\nDigite o tamanho da 3ª reta:\n");
        scanf("%0.2f",&l3);
        
        if ( (l1 > l2+l3) || (l2 > l1+l3) || (l3 > l1+l2) )
            printf("\nAs retas não formam um triangulo\n");
            
        else
            
            p = (l1+l2+l3)/3; // Calcula o semi perimetro    
            
            area = pow ( p * (p-l1) * (p-l2) * (p-l3) , 0.5); // Calcula a area do triangulo
            
            printf(" \nO Semi-perimetro do triangulo é %0.2f\n",p);
            
            printf(" \nA Area do triangulo é %0.2f\n",area);
        
        if ( l1==l2==l3 )
            printf(" \nO Triangulo é Equilatero \n");
            
        else    
            if ( (l1==l2!=l3) || (l1==l3!=l2) || (l3==l2!=l1) )
                printf(" \nO Triangulo é Isoceles\n");
            
            else
                if ( l1!=l2!=l3 )
                    printf(" \nO Triangulo é Escaleno\n");
                    
                    printf("\n Tecle a opção desejada: \n1- Reiniciar \n2- Finalizar\n");
                    scanf("%d",cont);
                    
        getch();
        
        
    
    }while ( cont < 2);

}

Mas ainda existem alguns erros q não consigo solucionar !!!

1- Ao rodar o programa ele não consegue me dizer qual a classificação do triangulo (equilatero, isoceles ou escaleno) mostrando somente de qual ele pertence e ao pedir ao usuario se deseja reinciar msmo pedindo para finalizar ele recomeça o programa !!!

Peço ajuda a vocês !!!

Desde já obrigadO !!!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Atenção

Este sub-fórum é destinado, exclusivamente, à postagem de artigos, tutoriais e dicas. Dúvidas devem ser postadas no fórum principal

Como pode ver, aqui não é o lugar certo para postar...

Vou pedir para que o tópicos seja movido !

1- Ao rodar o programa ele não consegue me dizer qual a classificação do triangulo (equilatero, isoceles ou escaleno) mostrando somente de qual ele pertence

Seu código tem mais de um problema e por isso vou postar a correção aqui

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

int main ()
{
    float l1,l2,l3,p,area;
    char cont=0;
    
    do
    {
        system("cls");
        printf("\nDigite o tamanho da 1ª reta:\n");
        scanf("%0.2f",&l1);
        printf("\nDigite o tamanho da 2ª reta:\n");
        scanf("%0.2f",&l2);
        printf("\nDigite o tamanho da 3ª reta:\n");
        scanf("%0.2f",&l3);
        printf("Teste:");
        unsigned long int valor;
        scanf("%ul",valor);
        printf("\n");
        
        if ( (l1 > l2+l3) || (l2 > l1+l3) || (l3 > l1+l2) ){
            printf("\nAs retas não formam um triangulo\n");
        }
        else{
            p = (l1+l2+l3)/3; // Calcula o semi perimetro    
            
            area = pow ( p * (p-l1) * (p-l2) * (p-l3) , 0.5); // Calcula a area do triangulo
            
            printf(" \nO Semi-perimetro do triangulo é %0.2f\n",p);
            
            printf(" \nA Area do triangulo é %0.2f\n",area);
        }
        if ( l1==l2==l3 ){
            printf(" \nO Triangulo é Equilatero \n");
        }
            if ( (l1==l2!=l3) || (l1==l3!=l2) || (l3==l2!=l1) ){
                printf(" \nO Triangulo é Isoceles\n");
            }
            else if ( l1!=l2!=l3 ){
                 printf(" \nO Triangulo é Escaleno\n");
            }
        printf("\n Tecle a opção desejada: \n1- Reiniciar \n2- Finalizar\n");
        cont=getch();
        printf("O valor e:%c\n",cont);
    }while ( cont != 50);
    exit(0);
}

Olhe as correções feitas e qualquer dúvida poste aqui !

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pelas correções + existem algumas delas q eu não entendi você poderia me explicar ?

Sera q você poderia postar o codigo denovo + comentando o porque de cada alteração ... as de erro de sintaxe não prescisa porque já vi u porque estavam errados !!!

Obrigado desde já !!!

Link para o comentário
Compartilhar em outros sites

  • 0

Dentre as modificações que fiz no código algumas eram necessárias (postarei aqui) e outras nem tanto (apenas para melhorar a organização)

O seu programa não encerrava porque você utilizou a função getch para conseguir o caractere digitado pelo usuário, mas o mesmo devolve um texto, sendo que você o comparou com a letra representada pelo código ASCII 2.Eu modifiquei o código para que comparasse o caractere com 50 (que é o código ASCII do número 2)

As outras modificações foram coisas mais simples, como por exemplo troquei a variável para o tipo char, a fim de gastar menos memória

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...