Errore che non capisco nel risultato finale

di il
14 risposte

Errore che non capisco nel risultato finale

Salve ragazzi, stavo sviluppando un programma per il calcolo della percentuale di ragazzi più alta o bassa rispetto ad un dato valore in una classe.
Solo che andando a compilare il programma, mi ritrovo un errore che non capisco dove sia.
Il programma è:
/* Prove d'esame - Blocco 2 - 1
Si dichiari un vettore VET di numeri reali, di cardinalità N, atto a contenenere i valori delle altezze degli studenti di 
una classe. Si richieda all'utente l'inserimento di M valori di altezze. Si progetti poi una funzione che restituisca, 
come parametro di ritorno, la percentuale di studenti con una altezza superiore ad un certo valore di riferimento 
H fornito come parametro di ingresso dalla funzione. */

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

typedef int AltezzeClasse[100];

void Inserimento(AltezzeClasse C, int& N);
float Percent (const AltezzeClasse C, const int N, int& bassi, int& alti, float& H, float& Perce);

int main (){
	
	AltezzeClasse C;
	int N;
	int bassi;
	int alti;
	float H;
	float Percentuale;
	
	Inserimento (C, N);
	
	cout << Percent (C, N, bassi, alti, H, Percentuale);
	
return 0;
}

void Inserimento(AltezzeClasse C, int& N){
	cout << "Inserire la cardinalita' del vettore delle altezze della classe:" << endl;
	cin >> N;
	
	cout << "Ora bisogna inserire i valori delle altezze della classe." << endl;
	for (int i=0; i<N; i++){
		cout << "L'altezza del ragazzo " << i+1 << " e': ";
		cin >> C[i];
	}
}

float Percent (const AltezzeClasse C, const int N, int& bassi, int& alti, float& H, float& Perce){
	cout << "Inserire il valore di riferimento:" << endl;
	cin >> H;
	
	for (int i=0; i<N; i++)
		if (H>=C[i]){
			bassi++;
		}
		else{
			alti ++;
		}

	
	cout << "La percentuale di ragazzi piu' alti del valore H e':" << endl;
	Perce = ((alti/(N) * 100);

return Perce;
}
Non capisco perché non venga numericamente il risultato.. Dov'è l'errore ?

14 Risposte

  • Re: Errore che non capisco nel risultato finale

    Ho corretto inizializzando le variabili "alti" e "bassi" ma niente da fare, continua a darmi valori sballati.
    Eppure non mi pare che sbagli nemmeno nel richiamo della funzione.
  • Re: Errore che non capisco nel risultato finale

    Non è possibile che non ti dia altri messaggi d'errore.

    Ho tentato e ho avuto un errore nella linea

    Perce = ((alti/(N) * 100);
  • Re: Errore che non capisco nel risultato finale

    Non mi segnala alcun errore su Perce..
    Non so, non capisco.. Ho provato un po' a semplificare la funzione, alla luce del fatto che a me serve giusto sapere il numero di alunni più alti:
    
    float Percent (const AltezzeClasse C, const int N, int& alti, float& H, float& Perce){
    	cout << "Inserire il valore di riferimento:" << endl;
    	cin >> H;
    	
    	alti = 0;
    	
    	for (int i=0; i<N; i++)
    		if (H<C[i]){
    			alti++;
    		}
    
    	
    	cout << "La percentuale di ragazzi piu' alti del valore H e':" << endl;
        Perce = (alti/N)*100;
    
    return Perce;		
    
    Ma niente, continua a darmi un valore totalmente sbagliato. Che errore commetto ?
  • Re: Errore che non capisco nel risultato finale

    Ripeto ... guarda bene quella linea come l'avevi scritta...!

    Adesso il codice si ferma ad una return ... e poi? E la variabile alti non esiste!

    Non credo che tu non abbia altri messaggi ... mostra una schermata
  • Re: Errore che non capisco nel risultato finale

    Ti giuro, non ho messaggi quando compilo il programma.
    Anche perché se avessi messaggi di errore non avrei l'opportunità di testare il programma, non partirebbe la compilazione.

    L'errore è quindi sulla linea della percentuale.. Mmm..
    Ma è un errore aritmetico o di linguaggio di programmazione ?
  • Re: Errore che non capisco nel risultato finale

    Perdonami, perché la variabile alti non esiste ? L'ho inizializzata, ho anche provato un cout con alti e mi da un valore corretto. Non capisco.
  • Re: Errore che non capisco nel risultato finale

    Vuoi mandare una schermata dell'IDE con l'errore?

    Comunque, confronta la dichiarazione della funzione Perce in testa al programma con la funzione Perce vera e propria ... con attenzione
  • Re: Errore che non capisco nel risultato finale

    Pittella ha scritto:


    Perdonami, perché la variabile alti non esiste ? L'ho inizializzata, ho anche provato un cout con alti e mi da un valore corretto. Non capisco.
    Hai modificato il post e prima di modificarlo la variabile alti non esisteva.

    Se modifichi il codice nei post a cui ti ho già risposto, non ci capiamo più nulla.
  • Re: Errore che non capisco nel risultato finale

    Oregon, ho modificato un po' di messaggi dietro, forse parli di una situazione che ho già modificato.
    Il programma che ho sviluppato fino ad ora è:
    
    /* Prove d'esame - Blocco 2 - 1
    Si dichiari un vettore VET di numeri reali, di cardinalità N, atto a contenenere i valori delle altezze degli studenti di 
    una classe. Si richieda all'utente l'inserimento di M valori di altezze. Si progetti poi una funzione che restituisca, 
    come parametro di ritorno, la percentuale di studenti con una altezza superiore ad un certo valore di riferimento 
    H fornito come parametro di ingresso dalla funzione. */
    
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    typedef int AltezzeClasse[100];
    
    void Inserimento(AltezzeClasse C, int& N);
    float Percent (const AltezzeClasse C, const int N, int& alti, float& H, float& Perce);
    
    int main (){
    	
    	AltezzeClasse C;
    	int N;
    	int alti;
    	float H;
    	float Percentuale;
    	
    	Inserimento (C, N);
    	
    	cout << Percent (C, N, alti, H, Percentuale);
    	
    return 0;
    }
    
    void Inserimento(AltezzeClasse C, int& N){
    	cout << "Inserire la cardinalita' del vettore delle altezze della classe:" << endl;
    	cin >> N;
    	
    	cout << "Ora bisogna inserire i valori delle altezze della classe." << endl;
    	for (int i=0; i<N; i++){
    		cout << "L'altezza del ragazzo " << i+1 << " e': ";
    		cin >> C[i];
    	}
    }
    
    float Percent (const AltezzeClasse C, const int N, int& alti, float& H, float& Perce){
    	cout << "Inserire il valore di riferimento:" << endl;
    	cin >> H;
    	
    	alti = 0;
    	
    	for (int i=0; i<N; i++)
    		if (H<C[i]){
    			alti++;
    		}
    
    	cout << "La percentuale di ragazzi piu' alti del valore H e':" << endl;
        Perce = (alti/N)*100;
    
    return Perce;
    }
    Il compilatore non mi segnala alcun problema, avvio il programma, lo provo ma non ottengo il risultato corretto.
    Ora, quel che non capisco è dov'è l'errore. Ho anche confrontato la dichiarazione della funzione Perce e poi la funzione in se non trovo corrispondenze sbagliate.
  • Re: Errore che non capisco nel risultato finale

    Ora hai corretto il codice ... quali dati inserisci che non ti tornano?
  • Re: Errore che non capisco nel risultato finale

    oregon ha scritto:


    Ora hai corretto il codice ... quali dati inserisci che non ti tornano?
    Non mi calcola la percentuale, esce sempre 0.
    Non capisco perché, bah. Eppure non noto errori.
  • Re: Errore che non capisco nel risultato finale

    Il calcolo fallo così

    Perce = ((float)alti/N)*100;
  • Re: Errore che non capisco nel risultato finale

    Ora si che viene!
    Posso chiederti perché ?
  • Re: Errore che non capisco nel risultato finale

    Alti e N sono valori interi e hai un risultato intero della divisione se non indichi che uno è float
Devi accedere o registrarti per scrivere nel forum
14 risposte