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

Metallkros

Nuovo Utente
60
18
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.png
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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").
 

Metallkros

Nuovo Utente
60
18
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?
Post unito automaticamente:

ok ho inizializzato le variabili
l'output è questo 349940
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 
  • Mi piace
Reazioni: Metallkros

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,449
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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
 

Metallkros

Nuovo Utente
60
18
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
Post unito automaticamente:

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:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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. ;)
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili