[C] Esercizio di base: classificazione triangoli

di Anonimizzato20865 il
8 risposte
Buona sera. Chiedo un'informazione riguardo ad un programma realizzato in c che, inserite le misure di 3 lati, calcola se i tre lati compongono un triangolo isoscele, scaleno o equilatero!
Dopo averlo scritto tutto in un unico file sorgente ed essermi accorto che per la compilazione veniva impiegato più tempo del solito ho deciso di suddividere il programma in più file:

- Il principale
- La funzione per calcolare se il triangolo è scaleno
- La funzione per calcolare se il triangolo è isoscele
- La funzione per calcolare se il triangolo è equilatero

Ma , nonostante io inserisca la stessa misura per tutti i lati, il programma mi dice che si tratta di un triangolo scaleno ! Lascio il codice di tutti i file e attendo una risposta, grazie in anticipo !

Principale

//Programma in linguaggio C che legga da tastiera i valori delle lunghezze dei
//tre lati di un triangolo (detti A,B e C), e determini:
//1)se il triangolo è equilatero
//2)se il triangolo è isoscele
//3)se il triangolo è scaleno
//4)se il triangolo è rettangolo.

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

void Equilatero();
void Isoscele();
void Scaleno();

int main(){
    float l1,l2,l3;
    float quad1,quad2,quad3;
    
    //Inserisco i lati
    printf("Inserisci il primo lato: ");
    scanf("%f",&l1);
    printf("Inserisci il secondo lato: ");
    scanf("%f",&l2);
    printf("Inserisci il terzo lato: ");
    scanf("%f",&l3);
    
    //Verifico se si tratta di un triangolo equilatero
Equilatero ();
    
    //Verifico se si tratta di un triangolo isoscele
Isoscele ();
    
    //Verifico se si tratta di un triangolo scaleno
Scaleno ();

    
    system("PAUSE");
    return 0;
}
Funzione triangolo equilatero

//Funzione triangolo equilatero
#include <stdio.h>

void Equilatero(float l1, float l2, float l3){
if(l1==l2 && l2==l3 && l3==l1){
    printf("Il triangolo e' equilatero!\n");
}
else {
    printf("Il triangolo non e' equilatero!\n");
}
}
Funzione triangolo scaleno

//Funzione triangolo scaleno
#include <stdio.h>

void Scaleno(float l1, float l2, float l3){
if(l1!=l2 && l2!=l3 && l3!=l1){
    printf("Il triangolo e' scaleno!\n");
}
else {
    printf("Il triangolo non e' scaleno!\n");
}
}
Funzione triangolo isoscele

//Funzione triangolo isoscele
#include <stdio.h>

void Isoscele(float l1, float l2, float l3){
if ((l1==l2 && l2==l3 && l3!=l1)||(l1==l2 && l2!=l3 && l3==l1)||(l1!=l2 && l2==l3 && l3!=l1)){
    printf("Il triangolo e' isoscele!\n");
}
else {
    printf("Il triangolo non e' isoscele!\n");
}
}
P.S. Ho compilato il tutto usando gcc con gcc Triangoli.c Scaleno.c Equilatero.c Isoscele.c -o Triangoli

8 Risposte

  • Ti sei accorto che, quando chiami le funzioni nel main, non passi l1 l2 l3 ?
  • Si, l'ho fatto apposta in quanto credevo che non ce ne fosse bisogno poichè le avevo già inserite nei sorgente delle funzioni
  • No, questo vuol dire che non ti è chiaro come si lavora con gli argomenti delle funzioni.
  • Ho riletto il capitolo del libro a riguardo e credo di aver capito. Ma il tutto continua a non funzionare correttamente
  • Ovvero? Che modifiche hai fatto al codice?
  • oregon ha scritto:


    Ovvero? Che modifiche hai fatto al codice?
    Nel main, quando chiamo le funzioni, ho inserito gli argomenti.
    Cosí:
    
        //Verifico se si tratta di un triangolo equilatero
    Equilatero (l1,l2,l3);
        
        //Verifico se si tratta di un triangolo isoscele
    Isoscele (l1,l2,l3);
        
        //Verifico se si tratta di un triangolo scaleno
    Scaleno (l1,l2,l3);
    
  • E con quali dati non funziona?
  • Hai sbagliato la funzione isoscele eh
Devi accedere o registrarti per scrivere nel forum
8 risposte