Percentuale

di il
2 risposte

Percentuale

Salve, probabilmente si tratta di un problema banale ma dato che ho il cervello un po' fuso al momento non riesco ad arrivare ad una soluzione. Insomma, il programma mi chiede di porre delle domande con delle moltiplicazioni con numeri casuali e di valutare la risposta. Fin qui ci sono. Il problema sorge quando mi viene fatta la richiesta di contare il numero di risposte corrette e di quelle sbagliate e, in particolare, di calcolare la percentuale di quelle corrette. Qualora la parcentuale sia inferiore al 75% digitare un determinato messaggio, in caso contrario un altro...
Conviene calcolare la percentuale all'interno della funzione verifica e poi eventualmente passarla ad un parametro nella main? ...mi sono un po' incartato sulla soluzione.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int verifica(int, int, int);


main()
{
      int i, a, b, r;
      srand(time(NULL));
      for(i=0; i<=9; i++){
               a=rand()%9+1;
               b=rand()%9+1;
               printf("\n\nMoltiplicazione numero %d\n\n", i+1);
               printf("Quanto fa %d per %d?", a, b);
               scanf("%d", &r); 
               verifica(a, b, r);
                           
                     }
              
               putchar('\n');
               system("pause");
               return 0;
               }
               
int verifica(int a, int b, int r)
{
    int r2, errate, giuste, percentuale; 
    r2=a*b;
    if(r2==r){
    printf("Risultato esatto!");
    giuste++;
}
    else{
    printf("Risultato sbagliato!");
    errate++;
    

}

}


    

2 Risposte

  • Re: Percentuale

    Io i contatori errate e giuste li terrei sul main da cui poi posso ricavare le precentuali. Il tuo programma ha molti errori e non so come il compilatore te li faccia passare senza farteli notare.
    1. void main non è mai esistito, e non esisterà mai. int main si.
    2. la funzione verifica deve tornare qualcosa ma non vedo un return
    3. ci sono delle variabili non inizilizzate, errate++ e giuste++ dio sa che valori contengono.
    4. alla funzione verifica fare tornare 0 se errata e 1 se giusta e quindi con un if aumenti le variabili rispettive: errate, giuste.
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int verifica(int, int, int);
    
    
    int main()
    {
    	int i, a, b, r;
    	int errate = 0;
    	int giuste = 0;
    	srand(time(NULL));
    	for(i=0; i<=9; i++)
    	{
    		a=rand()%9+1;
    		b=rand()%9+1;
    		printf("\n\nMoltiplicazione numero %d\n\n", i+1);
    		printf("Quanto fa %d per %d?", a, b);
    		scanf("%d", &r);
    		if(verifica(a, b, r) == 0)
    			errate++;
    		else
    			giuste++;
    	}
    	printf("\nPercentuale risposte giuste: %.2f%%\n",(100. * (float)giuste) / (giuste + errate));
    	system("pause");
    	return 0;
    }
                   
    int verifica(int a, int b, int r)
    {
        int r2=a*b;
        if(r2==r)
    	{
    		printf("Risultato esatto!\n");
    		return 1;
        }
        else
    	{
    		printf("Risultato sbagliato!\n");
    	}
    	return 0;
    }
    
  • Re: Percentuale

    Ok, grazie per le correzioni e per i chiarimenti, cercherò di metterle in pratica la prossima volta!
Devi accedere o registrarti per scrivere nel forum
2 risposte