Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    57

    Problema con c++ calcolatore

    Ciao ragazzi..
    avrei bisogno di un aiuto riguardo questa semplicissima sequenza


    codice:
    #include <iostream>
    
    using namespace std;
    
    main()
    {
    float operatore;
    float risultatoa;
    float risultatob;
    float risultatoc;
    cout << "INSERIRE N. ";
    cin >> risultatoa;
    cout << "INSERIRE OPERATORE 1 per addizionare, 2 per sottrarre, 3 per moltiplicare, 4 per dividere: ";
    cin >> operatore;
    cout << "INSERIRE N. DA OPERARE ";
    cin >> risultatob;
    
    if (operatore = 1)
    {
    risultatoc = risultatoa + risultatob;
    cout << "Il risultato dell'addizione è: " << risultatoc << endl;
    }
    else if (operatore = 2)
    {
    
    if (operatore = 2)
    {
    risultatoc = risultatoa - risultatob;
    cout << "Il risultato della sottrazione è: " << risultatoc << endl;
    }
    
    }
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
    }
    Il problema è l'if..

    cioè se l'operatore è 2 o 3 o 4..

    non prosegue al else if.. e non capisco il motivo.. ma continua a farmi l'addizione.. perchè?

    vi ringrazio dell'aiuto...

    vi prego evitate commenti inutili.. ho iniziato ieri sera

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    L'operatore di confronto in C/C++ è

    ==

    e non

    =
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    57
    Originariamente inviato da oregon
    L'operatore di confronto in C/C++ è

    ==

    e non

    =
    ma lol... avevo saltato di leggere questa parte grazie ^^

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    57
    ottimo.. direi che come mio primissimo approccio al c e c++.. e andato a buon fine.. ma mi son ritrovato con una strana perplessità e domanda..:

    come si può notare per eseguire l'operatore +, - , *e / mi tocca usare 1 2 3 4..

    cosi...:

    codice:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    main()
    {
    float operatore;
    float risultatoa;
    float risultatob;
    float risultatoc;
    cout << "INSERIRE N. ";
    cin >> risultatoa;
    cout << "INSERIRE OPERATORE 1 per addizionare, 2 per sottrarre, 3 per moltiplicare, 4 per dividere: ";
    cin >> operatore;
    cout << "INSERIRE N. DA OPERARE ";
    cin >> risultatob;
    
    if (operatore == 1)
    {
    risultatoc = risultatoa + risultatob;
    cout << "Il risultato dell'addizione è: " << risultatoc << endl;
    cout << endl;
    cout << risultatoa << "  +" << endl;
    cout << risultatob << "  =" << endl;
    cout << "____" << endl;
    cout << risultatoc << endl;
    cout << endl;
    }
    else if (operatore == 2)
    {
    
    if (operatore == 2)
    {
    risultatoc = risultatoa - risultatob;
    cout << "Il risultato della sottrazione è: " << risultatoc << endl;
                  }
    }
    else if (operatore == 3)
    {
         if (operatore == 3)
         {
                      risultatoc = risultatoa * risultatob;
    cout << "Il risultato della moltiplicazione è: " << risultatoc << endl; 
                       }
    
         }
    else if (operatore == 4)
    {
         if (operatore == 4)
         {
                       risultatoc = risultatoa / risultatob;
    cout << "Il risultato della divisione è: " << risultatoc << endl;
                       }
         }
    
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    e se io volessi sostituire quel 1 2 3 4 con i loro rispettivi + - * / come devo fare?...

    cioè se io volessi togliere tutta quella strafilata di if ed else come dovrei fare?...

    questa volta come prima.. io mi sono adattato al linguaggio.. ma visto che siamo a basso profilo.. come faccio a fare al linguaggio quello che voglio io in questo caso?

    xDDDDDDDDD

    apparte gli scherzi è una community fantastica grazie a tutti voi e lo staff di eccellente fattura... ^^

  5. #5
    Per utilizzare i numeri, tu usi un tipo di dato che rappresenta un numero (erroneamente utilizzi float, che rappresenta valori in virgola mobile. Dovresti utilizzare uno short o un int per i numeri interi).

    Se vuoi utilizzare dei caratteri (quello che sono *, +, /, -), dovrai utilizzare il tipo di dato char.
    Per quel tipo di programma, conviene utilizzare il costrutto switch, ma essenzialmente non cambia molto:

    Codice PHP:
    #include <iostream>

    using namespace std;

    int main()
    {
        
    char op;
        
        
    cout << "Operatore: ";
        
    cin >> op;
        
        switch(
    op)
        {
            case 
    '+':
            {
                
    cout << "PIU'" << endl;
                break;
            }
            case 
    '-':
            {
                
    cout << "MENO" << endl;
                break;
            }
            case 
    '*':
            {
                
    cout << "PER" << endl;
                break;
            }
            case 
    '/':
            {
                
    cout << "DIVISO" << endl;
                break;
            }
            default: 
            {
                
    cout << "Non e' un operatore" << endl;
                break;
            }
        }


  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    57
    Originariamente inviato da antotan
    Per utilizzare i numeri, tu usi un tipo di dato che rappresenta un numero (erroneamente utilizzi float, che rappresenta valori in virgola mobile. Dovresti utilizzare uno short o un int per i numeri interi).

    Se vuoi utilizzare dei caratteri (quello che sono *, +, /, -), dovrai utilizzare il tipo di dato char.
    Per quel tipo di programma, conviene utilizzare il costrutto switch, ma essenzialmente non cambia molto:

    Codice PHP:
    #include <iostream>

    using namespace std;

    int main()
    {
        
    char op;
        
        
    cout << "Operatore: ";
        
    cin >> op;
        
        switch(
    op)
        {
            case 
    '+':
            {
                
    cout << "PIU'" << endl;
                break;
            }
            case 
    '-':
            {
                
    cout << "MENO" << endl;
                break;
            }
            case 
    '*':
            {
                
    cout << "PER" << endl;
                break;
            }
            case 
    '/':
            {
                
    cout << "DIVISO" << endl;
                break;
            }
            default: 
            {
                
    cout << "Non e' un operatore" << endl;
                break;
            }
        }


  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che vuoi dire con questa risposta ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    57
    Originariamente inviato da oregon
    Che vuoi dire con questa risposta ?
    anchio.. vorrei saperlo.. xD

    no va beh mi ha fatto partire la risposta senza ciò che avevo scritto io...

    ripeto...

    con int non potrei usare i numeri con la virgola.. cioè se volessi fare 1.1+1.1= mi darebbe errore oppure mi direbbe semplicemente 2 perchè perderebbe dei dati.. almeno cosi ho letto xD

  9. #9

    Re: Problema con c++ calcolatore

    Originariamente inviato da E3ddy
    codice:
    if (operatore = 1)
    eccone un altro...
    ;-)

    la soluzione definitiva, per evitare per sempre quel errore con qualunque linguaggio di programmazione è mettere nei confronti la costante a sinistra!

    http://www.isidoroghezzi.net/assegna...r_sbaglio.html

  10. #10
    Originariamente inviato da E3ddy
    anchio.. vorrei saperlo.. xD

    no va beh mi ha fatto partire la risposta senza ciò che avevo scritto io...

    ripeto...

    con int non potrei usare i numeri con la virgola.. cioè se volessi fare 1.1+1.1= mi darebbe errore oppure mi direbbe semplicemente 2 perchè perderebbe dei dati.. almeno cosi ho letto xD
    Indubbiamente se assegni 1.1 ad un int, perdi dei dati, ma non mi pare che nel tuo programma ci fosse scritto "Per la somma scrivi 1.1, per la divisione 3.14, per la moltiplicazione 2.7"

    L'universo delle scelte è U = {1, 2, 3, 4} quindi non tratterai numeri con la virgola, per questo non hai motivo di utilizzare un float.

    Se hai la necessità di utilizzare degli interi, utilizza long, int o short (eventualmente unsigned), in funzione della grandezza dell'intero.
    Nel tuo caso, poi, 1...4 sono solo dei caratteri alla fine dei conti, denotano solo una scelta, cioè non farai operazioni aritmetiche su di loro. Meglio allora usare un char che è grande 1 solo byte.
    Considerato poi che 1...4 equivale a +,-,*,/ direi che il char è il più ovvio


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 © 2024 vBulletin Solutions, Inc. All rights reserved.