Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

[Resolvido] Triangulo

Recommended Posts

Quais os problemas nesse codigo. É para verificar se forma um triangulo e qual tipo de triangulo

 

 

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

int verifica(int a, int b, int c){
	if(abs(b-c)<a && a< b+c){
				  return (1);
				  }
	else {
		 return (0);
		 }
}

char tipo(int a, int b, int c){
	if(a==b==c){
				return("Equilatero\n");
				}
	else {
		 if(a==b || a==c || b==c){
				 return("Isoscele\n");
				 }
		 else{
			  return("Escaleno");
			  }
			  }
}
				

int main()
{
	int a, b, c;
	printf("Informe os lados do triangulo\n");
	scanf("%d%d%d",&a,&b,&c);
	if(verifica){
				 return(tipo);
				 }
	else{
		 printf("Nao forma um triangulo");
		 }
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de eu analizar o código, pq to sem compilador aki.. gostaria q me diga, o erro é de lógica ow de compilação??

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom uma coisa q percebi, é q você esta dizendo q o retorno é um tipo char, e esta retornando uma cadeia de char..

 

e você qr retornar um char pro sistema operacional????

da dando um return dentro da main()

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu gostaria de fazer para verificar se é um triangulo os lados informados , se a função verificar for verdadeiro ir para a função tipo e a função tipo retornar o nome do triangulo imprimindo o nome na main

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora fico melhor:

 

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

int verifica(int a, int b, int c){
	if((abs(b-c)<a) && (a< (b+c))){
				  return (1);
				  }
	else {
		 return (0);
		 }
}

char *tipo(int a, int b, int c){
	if((a==B) && (a==c)){
				return("Equilatero");
				}
	else {
		 if((a==B) || (a==c) || (b==c)){
				 return("Isoscele\n");
				 }
		 else{
			  return("Escaleno");
			  }
			  }
}
				

int main()
{
	int a, b, c;
	char tipo[20];
	printf("Informe os lados do triangulo\n");
	scanf("%d%d%d",&a,&b,&c);
	if(verifica(a,b,c)){
				 tipo = tipo(a,b,c);
				 printf(" O triângulo e %s\n",&tipo);
				 }
	else{
		 printf("Nao forma um triangulo");
		 }
  system("PAUSE");	
  return 0;
}

Erro na linha 36 "called object is not a function"

tipo = tipo(a,b,c);

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

char* xtipo;
printf("Informe os lados do triangulo\n");
scanf("%d%d%d",&a,&b,&c);
if(verifica(a,b,c)){
xtipo = tipo(a,b,c);
printf(" O triângulo e %s\n",xtipo);
}

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

char *tipo(int a, int b, int c){
if((a==B) && (a==c)){
			return("Equilatero");
			}
else {
	 if((a==B) || (a==c) || (b==c)){
			 return("Isoscele\n");
			 }
	 else{
		  return("Escaleno");
		  }
		  }
}

 

Nem compila.

Se a == b, a ==c e b ==c então o triângulo é equilatero e não isósceles.

 

 

char *tipo(int a, int b, int c){
 if(a==b && a==c)
   return("Equilatero");
  else if (a!=b && a!=c && b!=c)
  return ("Escaleno");
  else return("Isosceles");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa entaum viciado tinha erro de lógica e de compilação;

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função tipo tem um B maiúsculo! E na main tem uma linha:

 

tipo = tipo(a,b,c);

 

tipo já e nome de função, escolhe outro nome pra variável!

 

Não sei se dá encrenca também, mas coloca 1 espaço entre os %d %d %d do scanf.

 

Até..

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int verifica(int a, int b, int c){
	if((abs(b-c)<a) && (a< (b+c))){
				  return (1);
				  }
	else {
		 return (0);
		 }
}

char *tipo(int a, int b, int c){
	if((a==B) && (a==c)){
				return("Equilatero");
				}
	else {
		 if((a!=B) && (a!=c) && (b!=c)){
				 return("Escaleno");
				 }
		 else{
			  return("Isosceles");
			  }
			  }
}
				

int main()
{
	int a, b, c;
	char nome[20];
	printf("Informe os lados do triangulo\n");
	scanf("%d%d%d",&a,&b,&c);
	if(verifica(a,b,c)){
				 nome = tipo(a,b,c);
				 printf(" O triângulo e %s\n",nome);
				 }
	else{
		 printf("Nao forma um triangulo");
		 }
  system("PAUSE");	
  return 0;
}

Continua dando erro na linha 36 so agora a mensagem é:

incompatible types in assignment

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int verifica(int a, int b, int c){
if(abs(b-c)<a && a< (b+c)){
return (1);
}
else {
return (0);
}
}

char *tipo(int a, int b, int c){
if(a==b && a==c){
return("Equilatero");
}
else {
if(a!=b && a!=c && b!=c){
return("Escaleno");
}
else{
return("Isosceles");
}
}
}

int main()
{
int a, b, c;
char nome[20];
printf("Informe os lados do triangulo\n");
scanf("%d %d %d",&a,&b,&c);
if(verifica(a,b,c)){
strcpy(tipo(a,b,c),nome);
printf(" O triângulo e %s\n",nome);
}
else{
printf("Nao forma um triangulo");
}
return 0;
}

 

 

Erro. Falha de Segmentação Core Dumped

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(verifica(a,b,c))
  printf(" O triângulo e %s\n",tipo(a,b,c));

 

 

Com strcpy(tipo(a,b,c),nome) você está copiando nome para o endereço da função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função tipo tem um B maiúsculo!

isso deve ter ocorrido pq ele coloco o codigo sem estar na tag [.code], ai saio o b.) assim B)..

ai qnd coloquei a tag [.code] fico com B maiusculo..

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int verifica(int a, int b, int c){
if(abs(b-c)<a && a< (b+c)){
return (1);
}
else {
return (0);
}
}

char *tipo(int a, int b, int c){
if(a==b && a==c && b==c){
return("Equilatero");
}
else {
if(a!=b && a!=c && b!=c){
return("Escaleno");
}
else{
return("Isosceles");
}
}
}

int main()
{
int a, b, c;
char nome[20];
printf("Informe os lados do triangulo\n");
scanf("%d %d %d",&a,&b,&c);
if(verifica(a,b,c)){
strcpy(tipo(a,b,c),nome);
printf(" O triângulo e %s\n",tipo(a,b,c));
}
else{
printf("Nao forma um triangulo");
}
return 0;
}
Depois que eu informo os lados continua dando falha de segmentação core dumped.

OBS: Quando os lados noa formam o triangulo o programa funciona aparecendo a mensagem q nao forma o triangulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou copiar o que eu já falei no post anterior:

 

 

Com strcpy(tipo(a,b,c),nome) você está copiando nome para o endereço da função .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou copiar o que eu já falei no post anterior:

 

 

Com strcpy(tipo(a,b,c),nome) você está copiando nome para o endereço da função .

 

Obrigado. Resolvido

 

 

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

int verifica(int a, int b, int c){
if(abs(b-c)<a && a< (b+c)){
return (1);
}
else {
return (0);
}
}

char *tipo(int a, int b, int c){
if(a==b && a==c){
return("Equilatero");
}
else {
if(a!=b && a!=c && b!=c){
return("Escaleno");
}
else{
return("Isosceles");
}
}
}

int main()
{
int a, b, c;
printf("Informe os lados do triangulo\n");
scanf("%d %d %d",&a,&b,&c);
if(verifica(a,b,c)){
printf(" O triângulo e %s\n",tipo(a,b,c));
}
else{
printf("Nao forma um triangulo");
}
  
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.