Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    155

    [C++] Aiuto su programma di esercizio

    Sto studiando il c++ e come esercizio ho scritto questo breve codice:

    codice:
    /*
    Data in input una serie di numeri, calcolare quanti di essi sono pari e quanti dispari;
    comunicare, inoltre, anche la percentuale del pari e del dispari sul totale.
    */
    
    #include <iostream.h>
    
    int main()
    {
    	//Variabili di input
    	int n;
    	char risp;
    
    	//Variabili di output
    	int resto, pari, disp, somma;
    	float ppar, pdisp;
    
    	//Inizializzazione variabili
    	pari = disp = somma = 0;
    
    	do
    	{
    		cout << endl << "Inserisci un numero intero: ";
    		cin >> n;
    	
    		resto = (n % 2);
    
    		//Verifica se il numero è pari o dispari
    		if (resto == 0)
    		{
    			pari++;
    			somma++;
    		}
    		else
    		{
    			disp++;
    			somma++;
    		}
    
    		cout << endl << "Vuoi inserire un altro numero? (s/n)";
    		cin >> risp;
    	} while ((risp == 's') || (risp == 'S'));
    
    	//Calcola le percentuali
    	ppar = pari / somma * 100;
    	pdisp = disp / somma * 100;
    
    	//Comunica i valori
    	cout << endl << "Totale numeri: " << somma;
    	cout << endl << "Numeri pari: " << pari << ", pari al " << ppar << "% del totale.";
    	cout << endl << "Numeri dispari: " << disp << ", pari al " << pdisp << "% del totale.";
    	cout << endl;
    
    }
    La compilazione va a buon fine ma inserendo più di un numero le percentuali vengono sempre 0, non riesco a capire il perché.

    Qualcuno può aiutarmi?

    Grazie

  2. #2
    il problema è che la divisione tra 2 interi (pari e somma o disp e somma) dà a sua volta un intero.

    devi fare il cast a float per far si che ti venga una percentuale con la virgola

    codice:
    ppar = (float)pari / (float)somma * 100
    così dovrebbe funzionare

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    155
    Ho risolto, grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.