Switch case obbligatorio su un programma/ C++

di il
25 risposte

Switch case obbligatorio su un programma/ C++

Salve, il mio professore d'informatica (3 informatico) ci ha assegnato un programma da scrivere su dev c++, da fare a tutti i costi con lo switch case per scopo puramente didattico, la restrizione è il non poter fare una caterba di switch e/o switch con case lunghissimi. Ho provato a farlo sfruttando l'if else per assegnare a seconda dell'età inserita un valore ad una variabile d'appoggio, da utilizzare poi con lo switch. Purtroppo in output mi da tutti 0, potete darmi una mano? ps: cout<<varapp l'ho inserito per "debug"
//Marco Lombardi, 3H informatica, ISIS A. Serra, Napoli.
//Inserire l'età anagrafica di 10 clienti
//Calcolare e presentare a video:
//Quanti clienti sono minorenni;
//Quanti clienti sono tra i 30 ed i 45 anni;
//Quanti clienti sono tra i 45 ed i 60 anni;
//Quanti clienti hanno più di 60 anni;

#include <iostream>
using namespace std;
int main()
{
int eta=0,varapp=0,minorenni=0,fascia3045=0,fascia4560=0,over60=0;

for (int c=0; c<10; c++)
{
	cout<<"Inserire l'eta' anagrafica"<<endl;
	cin>>eta;
	
	if (eta<18){
	varapp=1;}
	else if (eta>=30 && eta<=45){
	varapp=2;}
	else if (eta>=45 && eta<=60){
	varapp=3;}
	else if (eta>60){
	varapp=4;}
	
	cout<<varapp<<endl;
	
	
	switch (varapp)
	{
		case '1':
			minorenni++;
			break;
		
		case '2':
			fascia3045++;
			break;
			
		case '3':
			fascia4560++;
			break;
			
		case '4':
			over60++;
			break;
			
	}
}

cout<<"I clienti minorenni sono: "<<minorenni<<endl
<<"I clienti con eta' compresa tra i 30 ed i 45 anni sono: "<<fascia3045<<endl
<<"I clienti con eta' compresa tra i 45 ed i 60 anni sono: "<<fascia4560<<endl
<<"I clienti con piu' di 60 anni sono: "<<over60<<endl;
system: ("PAUSE");
return 0;
}

25 Risposte

  • Re: Switch case obbligatorio su un programma/ C++

    Devi scrivere

    case 1:

    non

    case '1' :

    E già che ci sei sistem la if della fascia 45 per non sovrapporsi. E aggiungi la fascia 18-29
  • Re: Switch case obbligatorio su un programma/ C++

    La variabile varapp e la struttura switch non ti serve a niente. Puoi incrementare i contatori già nei diversi rami della if.
  • Re: Switch case obbligatorio su un programma/ C++

    [Post eliminato]
  • Re: Switch case obbligatorio su un programma/ C++

    [CODE] system: ("PAUSE"); Oltre ad esserci un errore sintattico, l’intera chiamata a system andrebbe evitata.
  • Re: Switch case obbligatorio su un programma/ C++

    Ma la "prescrizione" di usare la selezione a "switch - case" è cogente?
    intendo, il professore vuole prorpio che tu usi uno switch?
    perchè è il costrutto meno adatto, anche una semplice if - else if viene più leggibile e più semplice
    che poi dopo che hai pretrattato i dati con una serie di if-elseif lo switch non serve più, come giustamente ti hanno detto
    io aborro "if -else if", ma devo ammettere che qui va meglio di uno "switch - case"
    io lo farei in maniera diversa ancora, con array e soglie, ma non sono io che devo risolvere l'esercizio
  • Re: Switch case obbligatorio su un programma/ C++

    Probabilmente il professore vuole fargli fare uno switch su eta/15
  • Re: Switch case obbligatorio su un programma/ C++

    Punto di vista alternativo, che non avevo considerato

    io avrei fatto un array di strutture di tre membri, due interi e uno stringa
    oppure tre array da usare con unico indice, un intero per il contatore, un intero per la soglia d'età e una stringa per la descrizione
    ad ogni input attraverso l'array, appena l'età supera la soglia incremento il contatore ed esco dal for
    (qui col verbo "attraversare" intendo "percorro l'array con un ciclo for")
    poi in sede di output attraverso di nuovo l'array, stampo il contatore e la sua descrizione
    però in effetti non uso switch (e nemmeno le da me odiatissime if-elseif, che aborro, odio, detesto, evito e altro ancora...
  • Re: Switch case obbligatorio su un programma/ C++

    Direi che gli array o altre strutture dati non sono contemplate nella natura dell’esercizio che è fare mano con lo switch
  • Re: Switch case obbligatorio su un programma/ C++

    In effetti secondo me il professore ha fatto una cappella, in pratica dopo averci rispiegato lo switch (lo aveva spiegato in secondo un'altra prof e abbastanza male) ci ha dato questo esercizio, forse essendo abituato ad altri linguaggi che nello "switch" consentono dei range nei case.
    Gliel'ho spiegato e lui ha detto di usarlo comunque suggerendo l'impostazione che ho attuato nel programma che ho fatto (if e poi switch).
    Comunque ho aggiustato la sintassi dei case ma niente...
  • Re: Switch case obbligatorio su un programma/ C++

    markibox48 ha scritto:


    ... ma niente...
    Cioè, cosa hai scritto? Cosa succede ancora? Ce lo inventiamo?
  • Re: Switch case obbligatorio su un programma/ C++

    Sempre 0 in output, invio il codice me l'ero scordato.
  • Re: Switch case obbligatorio su un programma/ C++

    Aspettiamo questo codice ... sperando che tu abbia apportato le correzioni ai case che ti ho indicato nella prima risposta e che tu abbia RICOMPILATO.
  • Re: Switch case obbligatorio su un programma/ C++

    Scusate, ecco il codice ( il prof ha assegnato un altro programma)
    //Marco Lombardi, 3H informatica, ISIS A. Serra, Napoli.
    //Inserire l'età anagrafica di 10 clienti
    //Calcolare e presentare a video:
    //Quanti clienti sono minorenni;
    //Quanti clienti sono tra i 30 ed i 45 anni;
    //Quanti clienti sono tra i 45 ed i 60 anni;
    //Quanti clienti hanno più di 60 anni;
    
    #include <iostream>
    using namespace std;
    int main()
    {
    int e=0,t=0,f1=0,f2=0,f3=0,f4=0;
    
    for (int c=0; c<10; c++)
    {
    	cout<<"Inserire l'eta' anagrafica"<<endl;
    	cin>>e;
    	
    	if (e<18)
    	t=1;
    	else if (e>=30 && e<=45)
    	t=2;
    	else if (e>=45 && e<=60)
    	t=3;
    	else if (e>60)
    	t=4;
    	
    	
    	switch (t)
    	{
    		case '1':
    			f1++;
    			break;
    		
    		case '2':
    			f2++;
    			break;
    			
    		case '3':
    			f3++;
    			break;
    			
    		case '4':
    			f4++;
    			break;
    	}
    }
    
    cout<<"I clienti minorenni sono: "<<f1<<endl
    <<"I clienti con eta' compresa tra i 30 ed i 45 anni sono: "<<f2<<endl
    <<"I clienti con eta' compresa tra i 45 ed i 60 anni sono: "<<f3<<endl
    <<"I clienti con piu' di 60 anni sono: "<<f4<<endl;
    return 0;
    }
  • Re: Switch case obbligatorio su un programma/ C++

    1 != '1'

    Te l'hanno già detto!
Devi accedere o registrarti per scrivere nel forum
25 risposte