Aiuto con l'istruzione switch case C++

di il
12 risposte

Aiuto con l'istruzione switch case C++

Salve a tutti, ho bisogno di aiuto con questo esercizio di C++:
Un supermercato effettua uno sconto in base all'importo totale della spesa. La tabella sconti è: SPESA<50€=SCONTO 5%; SPESA<65€=SCONTO 6%; SPESA<80€=SCONTO 7%; SPESA>=100€=SCONTO 10%.

Ora, io ho scritto il programma, ma mi da errore e non so come risolvere, ecco:

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
	int SI=0, SF=0;
	cout<<"Inserisci l'importo della spesa: ";
	cin>>SI;
	switch (SI)
	{
		case <50: //[Error] expected primary-expression before '<' token
			SF=SI-((SI*5)/100);
			break;
		case <65: //[Error] expected primary-expression before '<' token
			SF=SI-((SI*6)/100);
			break;
		case <80: //[Error] expected primary-expression before '<' token
			SF=SI-((SI*7)/100);
			break;
		case >=100: //[Error] expected primary-expression before '>=' token
			SF=SI-((SI*10)/100);
			break;
	}
	cout<<"L'importo finale \x8a: "<<SF<<"€"<<endl;
	
	return 0;
}
Quello che vedete vicino alle itruzioni "case" sono gli errori che DEV C++ mi da, e non so proprio come risolvere, quindi chiedo il vostro aiuto, grazie mille in anticipo.

12 Risposte

  • Re: Aiuto con l'istruzione switch case C++

    Non puoi usare lo switch per degli intervalli, per questo devi usare una serie di if
  • Re: Aiuto con l'istruzione switch case C++

    E butta nella spazzatura il DevC++

    Usa cose serie... Code::Blocks è ottimo, molto utilizzato in ambiente universitario... più semplice ed intuitivo, sempre aggiornato.
  • Re: Aiuto con l'istruzione switch case C++

    Ciao gabroc18..
    eccoti il programma completo, testato e funzionante con l'istruzione switch.
    spero di esserti stato d'aiuto..
    
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float spesa;
        char sconto;
    
        cout<<"Inserisci l'importo della spesa in euro: ";
        cin>>spesa;
    
        if(spesa>0&&spesa<=50)
        {
            sconto='a';
        }
        if(spesa>50&&spesa<=65)
        {
            sconto='b';
        }
        if(spesa>65&&spesa<=80)
        {
            sconto='c';
        }
        if(spesa>=100)
        {
            sconto='d';
        }
    
        switch(sconto)
        {
        case 'a':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 5%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.05)<<"euro"<<endl;
                break;
            }
        case 'b':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 6%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.06)<<"euro"<<endl;
                break;
            }
        case 'c':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 7%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.07)<<"euro"<<endl;
                break;
            }
        case 'd':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 10%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.1)<<"euro"<<endl;
                break;
            }
        default:
            {
                system("CLS");
                cout<<"Mi dispiace ma qualcosa e' andato storto... :( "<<endl;
                break;
            }
        }
        return 0;
    }
    
  • Re: Aiuto con l'istruzione switch case C++

    ERROR404 ha scritto:


    Ciao gabroc18..
    eccoti il programma completo, testato e funzionante con l'istruzione switch.
    spero di esserti stato d'aiuto..
    
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float spesa;
        char sconto;
    
        cout<<"Inserisci l'importo della spesa in euro: ";
        cin>>spesa;
    
        if(spesa>0&&spesa<=50)
        {
            sconto='a';
        }
        if(spesa>50&&spesa<=65)
        {
            sconto='b';
        }
        if(spesa>65&&spesa<=80)
        {
            sconto='c';
        }
        if(spesa>=100)
        {
            sconto='d';
        }
    
        switch(sconto)
        {
        case 'a':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 5%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.05)<<"euro"<<endl;
                break;
            }
        case 'b':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 6%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.06)<<"euro"<<endl;
                break;
            }
        case 'c':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 7%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.07)<<"euro"<<endl;
                break;
            }
        case 'd':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 10%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.1)<<"euro"<<endl;
                break;
            }
        default:
            {
                system("CLS");
                cout<<"Mi dispiace ma qualcosa e' andato storto... :( "<<endl;
                break;
            }
        }
        return 0;
    }
    
    Ma dove sta scritto che per l'esercizio bisogna utilizzare switch? E poi cosa sono tutte quelle system()???
  • Re: Aiuto con l'istruzione switch case C++

    Bho.. se lui vuole utilizzare switch chi sono io per impedirglielo? se poi vorrà anche una soluzione con altri sistemi, basta che lo chiede e o io, o qualcun'altro sicuramente più esperto di me gliela fornirà..
    il comando system("CLS"); serve per pulire lo schermo dal vecchio codice stampato.
  • Re: Aiuto con l'istruzione switch case C++

    Guarda che in questo modo non è che lo aiuti tanto...
    gli hai semplicemente fornito una soluzione dove lui fa un copia e incolla e amen...

    Cosi non impara mai niente, o meglio... potrebbe anche imparare qualcosa , però alla fine dimenticherà perchè non avendolo risolto lui il problema, magari anche con il nostro aiuto, la soluzione sarà inutile.
  • Re: Aiuto con l'istruzione switch case C++

    Se un giorno ti si ferma l'auto, credi che ti sarà piu d'aiuto il meccanico che te la sistema o quello che ti dirà di studiarti i principi di termo dinamica?
    io credo che se una persona è curiosa ed ha voglia di imparare, non è la soluzione pronta al problema che lo demotiva, tutt'altro.. da quella soluzione puo prendere spunto per cercare le differenze da quello che aveva scritto lui e quello che gli è stato suggerito.
  • Re: Aiuto con l'istruzione switch case C++

    A parte che non vedo nesso con l'esempio che hai fatto dell'auto e del meccanico, perchè lui non deve diventare un meccanico, mentre invece dovrebbe diventare un informatico...

    Poi normalmente su questo forum non è normale dare la pappa pronta a nessuno, ma è normale invece aiutare tutti quelli che chiedono aiuto e sono ben predisposti a imparare da soli arrivando alla soluzione con i nostri suggerimenti...

    Tu non gli hai suggerito niente, ma gli hai semplicemente dato la soluzione.

    E posso assicurarti che lui ora, la copia, e tra qualche settimana ha già dimenticato tutto
  • Re: Aiuto con l'istruzione switch case C++

    @gabroc18 ... Quando esegui le if, calcola lo sconto e alla fine visualizza soltanto una volta il risultato.

    Non ha senso scrivere tutte le if e lo switch e replicare 4 volte le stesse linee di codice.

    Prova a correggere in questo modo il tuo programma, rendendoti conto DA SOLO di quello che fai.

    Impara a pescare ... non farti dare i pesci (neanche tanto buoni) dagli altri.
  • Re: Aiuto con l'istruzione switch case C++

    candaluar ha scritto:


    ERROR404 ha scritto:


    Ciao gabroc18..
    eccoti il programma completo, testato e funzionante con l'istruzione switch.
    spero di esserti stato d'aiuto..
    
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float spesa;
        char sconto;
    
        cout<<"Inserisci l'importo della spesa in euro: ";
        cin>>spesa;
    
        if(spesa>0&&spesa<=50)
        {
            sconto='a';
        }
        if(spesa>50&&spesa<=65)
        {
            sconto='b';
        }
        if(spesa>65&&spesa<=80)
        {
            sconto='c';
        }
        if(spesa>=100)
        {
            sconto='d';
        }
    
        switch(sconto)
        {
        case 'a':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 5%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.05)<<"euro"<<endl;
                break;
            }
        case 'b':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 6%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.06)<<"euro"<<endl;
                break;
            }
        case 'c':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 7%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.07)<<"euro"<<endl;
                break;
            }
        case 'd':
            {
                system("CLS");
                cout<<"Hai speso "<<spesa<<"euro"<<endl;
                cout<<"Hai diritto ad uno sconto del 10%"<<endl;
                cout<<"Il totale aggiornato e' di: "<<spesa-(spesa*0.1)<<"euro"<<endl;
                break;
            }
        default:
            {
                system("CLS");
                cout<<"Mi dispiace ma qualcosa e' andato storto... :( "<<endl;
                break;
            }
        }
        return 0;
    }
    
    Ma dove sta scritto che per l'esercizio bisogna utilizzare switch? E poi cosa sono tutte quelle system()???
    In realtà l'esercizio sul libro di informatica richiedeva lo switch, ma ora ho risolto facendo una serie di if annidati, grazie mille a tutti.
  • Re: Aiuto con l'istruzione switch case C++

    gabroc18 ha scritto:


    In realtà l'esercizio sul libro di informatica richiedeva lo switch
    Solo per curiosità, di che libro si tratta?
  • Re: Aiuto con l'istruzione switch case C++

    candaluar ha scritto:


    gabroc18 ha scritto:


    In realtà l'esercizio sul libro di informatica richiedeva lo switch
    Solo per curiosità, di che libro si tratta?
    Informatica in C e C++ di Hoepli
Devi accedere o registrarti per scrivere nel forum
12 risposte