Problema in C

di il
12 risposte

Problema in C

Salve a tutti , io devo fare un problema sul C in cui dati 3 dati di un triangolo, devo determinare il suo tipo che ne possono essere 4: Isoscele, Scaleno, Equilatero, Rettangolo.
PS: I 3 dati appartengono ad un triangolo quindi è inutile che faccio quell'operazione per vedere se è un triangolo.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
int a,b,c, ipoten;
short r,equilatero,isoscele,scaleno,rettangolo;
printf("Inserisci il primo numero ");
scanf("%d", &a);
printf("Inserisci il secondo numero ");
scanf("%d", &b);
printf("Inserisci il terzo numero ");
scanf("%d", &c);
if (a==b) {
if (b==c) {
r=Equilatero;
printf("Il triangolo e'%d ",r);
}
else {
r=Isoscele;
("Il triangolo e'%d ",r);
}
}
else {
ipoten=a;
if (ipoten=sqrt(b^2+c^2)) {
R=Rettangolo;
("Il triangolo e'%d ",r);
}
else {
r=Scaleno;
("Il triangolo e'%d ",r);
}
}
system("PAUSE");
return(0);
}
L'errore che mi dà sta su ogni riga di r=Equilatero, r=Isoscele, etc... il tipo di dato "short" non so precisamente se è una stringa o meno... il problema è che mi sono inceppato al secondo else (perchè il problema vuole anche il triangolo rettangolo e questo mi ha bloccato). Grazie in anticipo.
PS: Non sono tanto esperto del C.

12 Risposte

  • Re: Problema in C

    Dovresti utilizzare i tag code altrimenti il codice diventa difficile da leggere.
    Ad ogni modo prova a semplificare, nei punti in cui stampi il risultato non passare per r, es. al posto di
    r=Equilatero;
    printf("Il triangolo e'%d ",r);
    scrivi
    printf("Il triangolo e' Equilatero");
  • Re: Problema in C

    candaluar ha scritto:


    Dovresti utilizzare i tag code altrimenti il codice diventa difficile da leggere.
    Ad ogni modo prova a semplificare, nei punti in cui stampi il risultato non passare per r, es. al posto di
    r=Equilatero;
    printf("Il triangolo e'%d ",r);
    scrivi
    printf("Il triangolo e' Equilatero");
    Ciao, allora il programma parte: se metto tutti e tre i valori uguali mi dice che è equilatero (cioè giusto). Se metto 3 valori o 2 valori diversi, dice direttamente Premere un tasto per continuare...
  • Re: Problema in C

    Magari se lo riscrivi indentato e corretto, ovvero così
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void) 
    {
    	int a,b,c, ipoten;
    
    	printf("Inserisci il primo numero ");
    	scanf("%d", &a);
    	
    	printf("Inserisci il secondo numero ");
    	scanf("%d", &b);
    
    	printf("Inserisci il terzo numero ");
    	scanf("%d", &c);
    
    	if (a==b) 
    	{
    		if (b==c) 
    		{
    			printf("Il triangolo e' Equilatero\n");
    		}
    		else 
    		{
    			printf("Il triangolo e' Isoscele\n");
    		}
    	}
    	else 
    	{
    		ipoten=a;
    		if (ipoten==sqrt((double)b*b+c*c)) 
    		{
    			printf("Il triangolo e' Rettangolo\n");
    		}
    		else 
    		{
    			printf("Il triangolo e' Scaleno\n");
    		}
    	}
    
    	system("PAUSE");
    	return(0);
    }
    
    riesci a capire da solo dove sta il problema ...
  • Re: Problema in C

    oregon ha scritto:


    Magari se lo riscrivi indentato e corretto, ovvero così
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void) 
    {
    	int a,b,c, ipoten;
    
    	printf("Inserisci il primo numero ");
    	scanf("%d", &a);
    	
    	printf("Inserisci il secondo numero ");
    	scanf("%d", &b);
    
    	printf("Inserisci il terzo numero ");
    	scanf("%d", &c);
    
    	if (a==b) 
    	{
    		if (b==c) 
    		{
    			printf("Il triangolo e' Equilatero\n");
    		}
    		else 
    		{
    			printf("Il triangolo e' Isoscele\n");
    		}
    	}
    	else 
    	{
    		ipoten=a;
    		if (ipoten==sqrt((double)b*b+c*c)) 
    		{
    			printf("Il triangolo e' Rettangolo\n");
    		}
    		else 
    		{
    			printf("Il triangolo e' Scaleno\n");
    		}
    	}
    
    	system("PAUSE");
    	return(0);
    }
    
    riesci a capire da solo dove sta il problema ...
    Ciao, senti il problema sta nel fatto che non so se è giusta l'operazione per vedere se è rettangolo... in ogni caso non funziona mi sapresti aiutare? :/
  • Re: Problema in C

    Se osservi bene, il problema parte tutto dal primo if
    if (a==b) 
    
    C'è un errore di fondo, controlla bene il codice e capisci perché...
    Per darti un indizio, facci caso se metti a = b e c diverso ti dice che è isoscele, ma se metti a != b e c = b invece di dirti anche in questo caso che è isoscele il programma probabilmente ti dice che è scaleno, o al più rettangolo se verifica il teorema di pitagora, (tra l'altro dovresti considerare altre e due casi come il caso del triangolo rettangolo isoscele e del triangolo rettangolo equilatero).
  • Re: Problema in C

    Scorpion1010 ha scritto:


    Ciao, senti il problema sta nel fatto che non so se è giusta l'operazione per vedere se è rettangolo... in ogni caso non funziona mi sapresti aiutare? :/
    Il problema sta nel fatto che non hai tentati di leggere una riga del programma (lo hai scritto tu?) altrimenti, ti ripeto, avresti capito ...
  • Re: Problema in C

    Si l'ho scritto io...
  • Re: Problema in C

    Scorpion1010 ha scritto:


    Si l'ho scritto io...
    Ma la riga che ho scritto così

    if (ipoten==sqrt((double)b*b+c*c))

    tu l'avevi scritto diversamente. Hai visto le differenze?

    Quali valori inserisci per il triangolo rettangolo?
  • Re: Problema in C

    Vabbè so riuscito a risolvere, grazie per avermi preso in giro
  • Re: Problema in C

    Ma che dici?
  • Re: Problema in C

    Nessuno ti prendeva in giro, cercavamo di aiutarti come nell'altro post...
  • Re: Problema in C

Devi accedere o registrarti per scrivere nel forum
12 risposte