Domanda Risolto Non riesco a trovare l'errore in questo programma c++

Stato
Discussione chiusa ad ulteriori risposte.

Francesco Leonetti

Utente Bronze
22 Gennaio 2021
10
5
1
28
Ultima modifica da un moderatore:
Ciao popolo di inforge,
sto approcciando ormai da qualche mese il linguaggio c++ e ho provato a scrivere un programma che mi convertisse un valore da MB/s in Mbps e viceversa però mi da sempre come risultato zero senza tenere conto della condizione iniziale e non riesco a capire davvero dove sta il problema (forse il fatto che scrivo un programma alle 2 di notte HAHA). copio e incollo il programma qui sotto così che vi possiate rendere conto di come non funziona (._.)

C++:
#include<iostream>
using namespace std;
int main()
{
    int unita;
    cout<<"Convertire Megabyte o megabit?(M/B)"<<endl;
    cin>>unita;
    if (unita='M')
    {
        float M;
        cout<<"inserire il valore in Megabyte"<<endl;
        cin>>M;
        float m=M/8;
        cout<<m;   
    }
    else
    if (unita='B')
    {
        float m;
        cout<<"inserire il valore in megabit"<<endl;
        cin>>m;
        float M=m*8;
        cout<<M;
    }
}
 
Come detto dall'utente, ricorda di utilizzare il tag CODE. ;)

Ho qualche altra osservazione che riguarda il codice però.
Visto che devi leggere dei caratteri puoi utilizzare il tipo char al posto dell'int, quindi char unita;.

Ti conviene utilizzare le parentesi su quell'else, in codici più grandi rischi di fare confusione (l'if dovresti in realtà indentarlo).
Il codice all'interno del blocco puoi anche riscriverlo così (idem per l'if sopra):
C++:
    else {
        if (unita=='B')
        {
            float m;
            cout<<"inserire il valore in megabit"<<endl;
            cin >> m;
            
            cout << (m*8);
        }
    }

Normalmente si utilizzerebbe un else-if (e ti converrebbe anche aggiungere un else per mostrare un messaggio quando non vengono inseriti nè B nè M).
Una cosa come questa insomma:

C++:
#include<iostream>
using namespace std;

int main()
{
    char unita;
    cout << "Convertire Megabyte o megabit?(M/B)"<<endl;
    cin >> unita;
    
    float m;
    if (unita=='M')
    {
        cout << "inserire il valore in Megabyte"<<endl;
        cin >> m;
        
        cout << (m/8);   
    }
    else if (unita=='B')
    {
        cout<<"inserire il valore in megabit"<<endl;
        cin >> m;
        
        cout << (m*8);
    }
    else
        cout << "Input non valido";
    
    return 0;
}
 
  • Mi piace
Reazioni: Francesco Leonetti
Stato
Discussione chiusa ad ulteriori risposte.