Esercitazione media in base 30 e in base 110 c++

Pubblicità

Metallkros

Nuovo Utente
Messaggi
60
Reazioni
18
Punteggio
24
Allora devo creare un programma in cui immettere i voti, poi deve fare la media in base 30 e in base 110.
il programma parte, ma mi da un output con numeri "sballati"
C++:
#include <iostream>

using namespace std;


int main ()
{
int voto;
float media;
int numero_voti;
float media30=(media/numero_voti);
float media110=((media30*110)/30);



while (voto > 0){
media++;
numero_voti+=voto;
 cout << " inserisci un voto (negativo per smettere) " << endl;
  cin >> voto;
 }
 if (numero_voti == 0){
  cout << " non hai inserito nessun voto " << endl;
 }
 else
 {
   media30=(media/numero_voti);
   media110=((media30*110)/30);
   cout << "hai inserito " << numero_voti << "voti " << endl;
   cout << "la media dei tuoi voti in base 30 e' " << media30 << endl;
   cout << " la media dei tuoi voti in base 110 e' " << media110 << endl;   
  }
return 0;
}
credo che sia perché legge il -1 come un voto, mentre il numero negativo dovrebbe solo fermare il ciclo...
ecco l'output Schermata 2019-10-21 alle 11.17.05.webp
 
Sicuramente il problema che ha maggior rilevanza sono quelle variabili che vengono utilizzate senza essere inizializzate. Prima devono essere inizializzate con un valore (l'input o un valore "neutro"), e poi fai i calcoli (altrimenti avranno un valore "sporco").
 
Sicuramente il problema che ha maggior rilevanza sono quelle variabili che vengono utilizzate senza essere inizializzate. Prima devono essere inizializzate con un valore (l'input o un valore "neutro"), e poi fai i calcoli (altrimenti avranno un valore "sporco").
uno 0 va bene?
--- i due messaggi sono stati uniti ---
ok ho inizializzato le variabili
l'output è questo 349940
 
Ultima modifica:
Ad esempio così:

C++:
#include <iostream>

using namespace std;


int main ()
{
    int voto = 0;
    double media = 0.0, media30, media110;
    int numero_voti = 0;

    while(voto >= 0) {
        cout << " inserisci un voto (negativo per smettere) " << endl;
        cin >> voto;
        
        numero_voti+=voto;
        media++;
    }
    
    if (numero_voti == 0){
        cout << " non hai inserito nessun voto " << endl;
    }
    else
    {
        media30=(media/numero_voti);
        media110=((media30*110)/30);
        cout << "hai inserito " << numero_voti << "voti " << endl;
        cout << "la media dei tuoi voti in base 30 e' " << media30 << endl;
        cout << " la media dei tuoi voti in base 110 e' " << media110 << endl;   
    }
    return 0;
}

Comunque la formula che utilizzi per la conversione non mi sembra corretta, se per base numerica viene proprio inteso sistema di numerazione in base 30 e 110.
 
a che serve quel media++ ?
In genere si usa per incrementare di 1 un intero, è la prima volta che lo vedo su un numero in virgola mobile
 
Ad esempio così:

C++:
#include <iostream>

using namespace std;


int main ()
{
    int voto = 0;
    double media = 0.0, media30, media110;
    int numero_voti = 0;

    while(voto >= 0) {
        cout << " inserisci un voto (negativo per smettere) " << endl;
        cin >> voto;
      
        numero_voti+=voto;
        media++;
    }
  
    if (numero_voti == 0){
        cout << " non hai inserito nessun voto " << endl;
    }
    else
    {
        media30=(media/numero_voti);
        media110=((media30*110)/30);
        cout << "hai inserito " << numero_voti << "voti " << endl;
        cout << "la media dei tuoi voti in base 30 e' " << media30 << endl;
        cout << " la media dei tuoi voti in base 110 e' " << media110 << endl; 
    }
    return 0;
}

Comunque la formula che utilizzi per la conversione non mi sembra corretta, se per base numerica viene proprio inteso sistema di numerazione in base 30 e 110.
si viene inteso quello
--- i due messaggi sono stati uniti ---
l'esercizio lo devo consegnare entro le 23:45, credo che lo consegnerò così e poi chiederò un ricevimento al prof. per farmelo correggere.
grazie a tutti per l'aiuto, potete chiudere.
 
Ultima modifica:
a che serve quel media++ ?
In genere si usa per incrementare di 1 un intero, è la prima volta che lo vedo su un numero in virgola mobile

Si hai ragione. Non ho prestato attenzione nemmeno io, ho solo riordinato un pò il codice.

l'esercizio lo devo consegnare entro le 23:45, credo che lo consegnerò così e poi chiederò un ricevimento al prof. per farmelo correggere.
grazie a tutti per l'aiuto, potete chiudere.

Allora ricontrolla bene. ;)
 
Pubblicità
Pubblicità
Indietro
Top