Ir ao conteúdo

Posts recomendados

Postado

//Leia três lados referentes ao lado de um triângulo (Lado A, Lado B e Lado C). 
//Verifique se esses lados podem ser os comprimentos dos lados de um triângulo, 
//após deverá ser informado qual o tipo de triângulo (se é um triângulo equilátero, isósceles ou escaleno).
//Como saber se os 3 lados informado formam um triângulo? 
//R.: O comprimento de um lado do triângulo é sempre menor do que a soma dos outros dois.
//Quais os tipos de triângulos? Como saber qual tipo é?
//R.:Equilátero > Todos lados iguais
//Isósceles > Dois lados iguais
//Escaleno > Todos os lados diferentes

 

using namespace std;
float valor1, valor2, valor3, triangulo, equilatero, isosceles, escaleno;

int main()
{
	setlocale(LC_ALL, "Portuguese");
	
	cout<<"\n\n Insira o primeiro valor: ";
	cin>>valor1;
	cout<<"\n\n Insira o segundo valor: ";
	cin>>valor2;
	cout<<"\n\n Insira o terceiro valor: ";
	cin>>valor3;
	
	if ((valor1 < (valor2 + valor3)) || (valor2 < (valor1 + valor3)) || ((valor3 < valor1 + valor2))){
		cout<<"\n\n  Os números que você inseriu formam um triangulo";
	}
	if ((valor1 == valor2) && ( valor1 == valor3) && (valor2 == valor3)){
		cout<<"\n\n  Os números que você inseriu formam um equilatero";
	}
	
	if ((valor1 == valor2) || ( valor1 == valor3) || (valor2 == valor3)){
		cout<<"\n\n  Os números que você inseriu formam um isosceles";
	}
	if ((valor1 != valor2) && ( valor1 != valor3) && (valor2 != valor3)){
		cout<<"\n\n  Os números que você inseriu formam um escaleno";
	}
	
	cout<<"\n\n\n";
}

 

Se eu insiro 3 inputs iguais ele exibe todos os if's ao in´ves de exibir apenas o if do equilátero.

 

Deve estar faltando alguma condição, mas eu não consegui descobrir. 

 

Será que alguém consegue me ajudar?

Postado
5 minutos atrás, Izaac Baptista disse:

Deve estar faltando alguma condição

 

Faltou você concluir a condição: use return uma vez que já concluiu o teste, ou else e coloque o resto do código dentro...

Postado

@arfneto

 

#include <iostream>
#include <iomanip>
using namespace std;
float valor1, valor2, valor3, triangulo, equilatero, isosceles, escaleno;

int main()
{
	setlocale(LC_ALL, "Portuguese");
	
	cout<<"\n\n Insira o primeiro valor: ";
	cin>>valor1;
	cout<<"\n\n Insira o segundo valor: ";
	cin>>valor2;
	cout<<"\n\n Insira o terceiro valor: ";
	cin>>valor3;
	
	if ((valor1 < (valor2 + valor3)) || (valor2 < (valor1 + valor3)) || ((valor3 < valor1 + valor2))){
		cout<<"\n\n  Os números que você inseriu formam um triangulo";
	}
	if ((valor1 == valor2) && ( valor1 == valor3) && (valor2 == valor3)){
		cout<<"\n\n  Os números que você inseriu formam um equilatero";
	}
	
	if ((valor1 == valor2) && ( valor3 != valor1 ) || ( valor1 == valor3) && ( valor2 != valor1) || (valor2 == valor3) && (valor1 != valor3)){
		cout<<"\n\n  Os números que você inseriu formam um isosceles";
	}
	if ((valor1 != valor2) && ( valor1 != valor3) && (valor2 != valor3)){
		cout<<"\n\n  Os números que você inseriu formam um escaleno";
	}
	else{
		cout<<"\n\n  Os números que você inseriu não formam um triangulo";
	}
	
	cout<<"\n\n\n";
}

Deu certo, No caso eu acrescentei o else e mais umas condições no terceiro if e 

Postado
1 hora atrás, Izaac Baptista disse:

Deu certo, No caso eu acrescentei o else e mais umas condições no terceiro if e 

 

Sim. Mas não está bom ainda. Entenda a sequência disso: se o triângulo é equilátero por exemplo, acabou.  No entanto seu programa segue testando se ele é escaleno ou isósceles...

Ou você retorna simplesmente, ou coloca TODO o resto dentro de um else...

adicionado 4 minutos depois

E se não há sequer um triângulo seu programa mostra a mensagem mas continua. Qual o propósito?

adicionado 11 minutos depois

Em resumo: não está certo ainda. Apenas roda.

 

Veja como pode ser mais simples

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
float valor1, valor2, valor3;
  
	setlocale(LC_ALL, "Portuguese");

	cout << "\n\n Insira o primeiro valor: ";
	cin >> valor1;
	cout << "\n\n Insira o segundo valor: ";
	cin >> valor2;
	cout << "\n\n Insira o terceiro valor: ";
	cin >> valor3;

    if (    (valor1 < (valor2 + valor3)) ||
            (valor2 < (valor1 + valor3)) ||
            (valor3 < valor1 + valor2))
	{
        cout << "\n\n  Os números que você inseriu nao formam um triangulo";
        return 0;
	};	// if()

    if (    (valor1 == valor2) &&
            (valor1 == valor3) &&
            (valor2 == valor3))
	{
		cout << "\n\n  Os números que você inseriu formam um equilatero";
		return 0;
	};  // if()

    if (  (valor1 == valor2) ||
          (valor1 == valor3) ||
          (valor2 == valor3))
	{
		cout << "\n\n  Os números que você inseriu formam um isosceles";
		return 0;
	};	// if()

    cout << "\n\n  Os números que você inseriu formam um escaleno\n\n\n";
    return 0;
}

Não declare variáveis fora de main()...

Postado

@arfnetoEu tentei algumas vezes fazendo o programa com duas funções. Me dá uma ajuda a fazer ele.

 

#include <iostream>

void etriangulo(double valor1, double valor2, double valor3){
if((valor1 < (valor2 + valor3)) || (valor2 < (valor1 + valor3)) || (valor3 < (valor1 + valor2)))
    {
    std::cout << "Triangulo possivel" << std::endl;
} else{
    std::cout << "Triangulo nao possível" << std::endl;
}
}
/*
double tipo(double val1, double val2, double val3){
switch(((val1 == val2) && (val1 == val3) && (val2 == val3)) && ((val1 == val2) || (val1 == val3) || (val2 == val3))){
case 1:
    std::cout << "Os numeros inseridos formam um equilatero" << std::endl;
    break;
case 2:
    std::cout << "Os numeros inseridos formam um isosceles" << std::endl;
    break;
case 3:
    std::cout << "Os numeros inseridos formam um escaleno" << std::endl;
    break;
}
}
*/
int main(){
double l1,l2,l3;
std::cout << "Lados do triangulo" << std::endl;
std::cin >> l1 >> l2 >> l3;
etriangulo(l1,l2,l3);
//tipo(l1,l2, l3);

return 0;
}

Valeu

Postado
53 minutos atrás, Cordas disse:

Eu tentei algumas vezes fazendo o programa com duas funções. Me dá uma ajuda a fazer ele

 

O trecho que eu te mostrei é o programa. Você leu ao menos?

Entendeu a parte em que eu expliquei para simplesmente retornar assim que tem uma resposta? E a parte do else?

 

Para que duas funções para resolver um problema assim linear? Linear no sentido em que você verifica as condições uma a uma e termina assim que conclui algo.

Você tem um livro-texto na sua escola? Todo curso tem isso. Qual é?

Tem uma apostila ao menos? Notas de aula descrevendo por exemplo o comando switch()?

Ou como declarar uma função?
 

Eu acho muito importante ter um livro. Muitas escolas tem bibliotecas virtuais. Serviços que elas assinam e permitem que os alunos consultem livros on-line por exemplo. Sem custo.

 

A função

    double tipo(double val1, double val2, double val3)
    {
        switch (((val1 == val2) && (val1 == val3) && (val2 == val3)) && ((val1 == val2) || 
                 (val1 == val3) || (val2 == val3)))
        {
        case 1:
            std::cout << "Os numeros inseridos formam um equilatero" << std::endl;
            break;
        case 2:
            std::cout << "Os numeros inseridos formam um isosceles" << std::endl;
            break;
        case 3:
            std::cout << "Os numeros inseridos formam um escaleno" << std::endl;
            break;
        }
    };

De todo modo, ao declarar uma função que retorna um float você precisa retornar algo, um float. Foi o que você declarou. No entanto sua lógica não retorna nada. Só uma resposta: 

  • com as medidas dadas é possível criar um triângulo?
  • Ele é equilátero?
  • Ele é isósceles?
  • Então ele é escaleno...

Só isso.

 

O switch()

 

switch é um comando de seleção e você seleciona a partir de uma constante. Você colocou uma expressão lá dentro. Que pretende?

 

Direto de https://www.tutorialspoint.com/cprogramming/switch_statement_in_c.htm um site que você pode usar porque tem todas as definições e em geral com exemplos. A sintaxe do switch()

switch(expression) {

   case constant-expression  :
      statement(s);
      break; /* optional */
	
   case constant-expression  :
      statement(s);
      break; /* optional */
  
   /* you can have any number of case statements */
   default : /* Optional */
   statement(s);
}

Assim é

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...