Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Parma
    Messaggi
    7

    problema con esercizio in c++ !!

    ciao ragazzi, devo realizzare un programmino in c++ dove dato un "menu operazioni", l'utente deve inserire la sua scelta, ed in base ad essa eseguire l'operazione corrispondente.
    Mi è stato indicato di usare l'istruzione switch.. ma non riesco a scrivere il programma in modo corretto.. cosa sbaglio?
    questo è il codice che ho scritto, e che ovviamente per tanti motivi ed errori non vuole compilare:

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main()
    {
    int scelta;
    int dato;
    int i;
    unsigned int valore_assoluto;
    int quadrato=pow(dato, 2);
    int sommatoria=0;
    int fattoriale;


    cout<<"Ciao, questo è un programma che permette di scegliere un operazione matematica da svolgere.."<<endl<<endl;
    cout<<"Scegli fra: "<<endl,
    cout<<"1: Valore assoluto. "<<endl;
    cout<<"2: Quadrato. "<<endl;
    cout<<"3: Sommatoria. "<<endl;
    cout<<"4:Fattoriale. "<<endl;
    cout<<"5: Esci. "<<endl;
    cout<<"inserisci la tua scelta: "<<endl;
    cin>>scelta;

    if(scelta<1 || scelta>5)
    {
    cout<<"Scelta errata!! ";
    }




    switch(scelta)
    {
    case'1':
    cout<<"Hai scelto, l'operazione <valore assoluto>"<<endl;
    cout<<"inserisci un numero intero:";
    cin>>dato;
    valore_assoluto=dato;
    cout<<"Il valore assoluto di "<<dato<<" è: "<<valore_assoluto;
    break;

    case'2':
    cout<<"Hai scelto, l'operazione <quadrato>"<<endl;
    cout<<"inserisci un numero intero:";
    cin>>dato;
    cout<<"Il quadrato di "<<dato<<" è: "<<dato*dato;
    break;

    case'3':
    cout<<"Hai scelto, l'operazione <sommatoria>"<<endl;
    cout<<"inserisci un numero intero:";
    cin>>dato;
    for(i=0; i<=dato; i++)
    sommatoria=+i;
    cout<<"La sommatoria di "<<dato<<" è: "<<sommatoria;
    break;

    case'4':
    cout<<"Hai scelto, l'operazione <fattoriale>"<<endl;
    cout<<"inserisci un numero intero:";
    cin>>dato;
    fattoriale=dato;
    while(dato>1)
    {
    fattoriale=fattoriale*(dato-1);
    dato--;
    }
    break;


    case'5':
    cout<<"Hai scelto, l'operazione <Esci>"<<endl;
    cout<<"Arrivederci";
    break;

    }


    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Se non utilizzi i tag code ben in pochi leggeranno il codice non indentato o si prenderanno la briga di indentarselo.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    è
    case 1:

    non
    case '1':

    (stessa cosa per gli altri case)
    inoltre

    if(scelta<1 || scelta>5)
    {
    cout<<"Scelta errata!! ";
    }

    e non dai la possibilità di reinserire la scelta, è un errore

    edit: ovviamente questi sono errori concettuali (probabilmente quello del case può essere considerato errore da qualche compilatore ed impedire la compilazione del codice)
    per aiutarci ad aiutarti dovresti dire quali errori segnala il compilatore e inserire il codice qui sul forum tra i tag code per migliorarne la legibilità
    Ultima modifica di Rising1; 10-01-2015 a 22:14

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ebbene mi sono preso la briga di leggerlo e indentarlo (ovviamente l'ho indentato con un tool...)
    Di seguito il codice corretto:

    codice:
    #include <iostream>
    #include <cmath>
    using namespace std;
    int main()
    {
        int scelta;
        int dato;
        int i;
        unsigned int valore_assoluto;
        int sommatoria=0;
        int fattoriale;
    
    
        cout<<"Ciao, questo è un programma che permette di scegliere un operazione matematica da svolgere.."<<endl<<endl;
        cout<<"Scegli fra: "<<endl;
        cout<<"1: Valore assoluto. "<<endl;
        cout<<"2: Quadrato. "<<endl;
        cout<<"3: Sommatoria. "<<endl;
        cout<<"4:Fattoriale. "<<endl;
        cout<<"5: Esci. "<<endl;
        cout<<"inserisci la tua scelta: "<<endl;
        cin>>scelta;
    
        if(scelta<1 || scelta>5) {
            cout<<"Scelta errata!! ";
        }
    
    
    
    
        switch(scelta) {
        case 1:
            cout<<"Hai scelto, l'operazione <valore assoluto>"<<endl;
            cout<<"inserisci un numero intero:";
            cin>>dato;
            // valore_assoluto=dato;    // SBAGLIATO!
            if(dato >= 0) valore_assoluto = dato;
            else valore_assoluto = -dato;
            cout<<"Il valore assoluto di "<<dato<<" è: "<<valore_assoluto;
            break;
    
        case 2:
            cout<<"Hai scelto, l'operazione <quadrato>"<<endl;
            cout<<"inserisci un numero intero:";
            cin>>dato;
            cout<<"Il quadrato di "<<dato<<" è: "<<dato*dato;
            break;
    
        case 3:
            cout<<"Hai scelto, l'operazione <sommatoria>"<<endl;
            cout<<"inserisci un numero intero:";
            cin>>dato;
            for(i=0; i<=dato; i++)
                sommatoria=+i;
            cout<<"La sommatoria di "<<dato<<" è: "<<sommatoria;
            break;
    
        case 4:
            cout<<"Hai scelto, l'operazione <fattoriale>"<<endl;
            cout<<"inserisci un numero intero:";
            cin>>dato;
            fattoriale=dato;
            while(dato>1) {
                fattoriale=fattoriale*(dato-1);
                dato--;
            }
            break;
    
    
        case 5:
            cout<<"Hai scelto, l'operazione <Esci>"<<endl;
            cout<<"Arrivederci";
            break;
    
        }
    
    
        return 0;
    }

    Gli errori principali erano:
    - c'era una virgola al posto di un punto e virgola
    - gli apici nei case non ci vanno, come ti hanno già fatto notare. Questo perché il tipo di dato su cui stai facendo lo switch è int e non char
    - la funzione per il calcolo del valore assoluto non era corretta: facevi semplicemente valore_assoluto = dato. Se mai ripassa l'argomento sul libro di matematica
    - quello che facevi all'inizio con la variabile quadrato non aveva senso: in quel momento la variabile dato contiene un valore casuale, che poi viene sovrascritto dall'utente. Puoi calcolare il quadrato solo dopo aver letto il valore di dato.


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.