PDA

Visualizza la versione completa : [C++] Scelta tra 4 operazioni con istruzione switch


iker1
13-04-2012, 21:44
Salve mi stato chiesto un programma che usando l' istruzione switch permetta di eseguire le 4 operazioni matematiche dopo avere verificato se i numeri (a e b) fossero maggiori 0. Seguendo gli appunti che avevo ho provato a farlo ma non riesco a capire dove sbaglio visto che la prima volta che uso questa funzione.

Ecco a voi la codifica (il programma non mi da errori e parte tranquillamente scrivo i due numeri ma una volta che devo digitare quale operazione fare nel comando "dammi operazione da 1 a 4" si blocca e mi scrive inactive in alto nella finestra di esecuzione del programma). Dopo vari tentativi ho levato la if che fermava il programma in caso i numeri non fossero maggiori di 0 ma il problema persiste.

#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<stdio.h>
void main()
{
int oper;
float a,b,som,sot,molt,div;
cout<<"dammi a";
cin>>a;
cout<<"dammi b";
cin>>b;
cout<<"dammi operazioni da 1 a 4";
cin>>oper;
switch(oper)
{
case 1:
som=a+b;
break;
case 2:
sot=a-b;
break;
case 3:
molt=a*b;
break;
case 4:
div=a/b;
break;
default:
cout<<"scelta errata";
cout<<"il risultato dell' addizione :"<<som<<endl;
cout<<"il risultato della sottrazione :"<<sot<<endl;
cout<<"il risultato della moltiplicazione :"<<molt<<endl;
cout<<"il risultato della divisione :"<<div;
}
getchar();
}


Vi ringrazio e mi scuso in anticipo per eventuali erroracci ma la spiegazione non era chiarissima.

oregon
13-04-2012, 21:55
I risultati non vanno nella parte di default ma fuori dallo switch ...

lolide
13-04-2012, 21:57
La prossima volta metti il codice tra i tag CODE cos lo capiamo meglio...

cmq il problema che hai messo gli output del risultato al default dello switch e non si vedono nel caso in cui oper sia tra 1 e 4.



default:
cout<<"scelta errata";
cout<<"il risultato dell' addizione :"<<som<<endl;
cout<<"il risultato della sottrazione :"<<sot<<endl;
cout<<"il risultato della moltiplicazione :"<<molt<<endl;
cout<<"il risultato della divisione :"<<div;
}
getchar();
}


Ovviamente non solo questo l'errore visto che hai pensato male il tuo programma, ma risolvendo questo problema ti accorgerai che qualcos'altro nn va anche se il programma funziona.

iker1
13-04-2012, 22:08
Scusate se non ho messo il programma nel codice CODE mi sono dimenticato, tornando al programma se facessi vedere il risultato di ogni operazione dopo lo svolgimento di essa senza far vedere tutti e 4 i risultati alla fine ?

In questo modo:

case 1:
som=a+b;
cout<<"il risultato dell' addizione :"<<som;

oregon
13-04-2012, 22:12
Perch non provi?

iker1
13-04-2012, 22:14
Ho provato e ora mi fa le operazioni ma dopo aver fatto un operazione normale che si blocca e mi costringe a far ripartire il programma per provare un altra operazione invece di chiedermi di fare un altra operazione ?

oregon
13-04-2012, 22:20
Originariamente inviato da iker1
Ho provato e ora mi fa le operazioni ma dopo aver fatto un operazione normale che si blocca e mi costringe a far ripartire il programma per provare un altra operazione invece di chiedermi di fare un altra operazione ?

Il computer esegue tutto quello che c' scritto nel programma, nulla di pi o di meno.

Dove c' scritto nel tuo programma che ti dovrebbe chiedere di fare un'altra operazione?
Dove sta il ciclo che eventualmente ripete il programma?

In realt, nel tuo programma, dopo la presentazione dei risultati, non c' altro codice.

iker1
13-04-2012, 22:35
Per ora il programma va bene quindi, casomai metto una for e faccio ripetere il programma 3 volte (dopo ogni operazione). Grazie mille a te e ad oregon per l' aiuto

oregon
13-04-2012, 22:36
Perch un for e 3 volte?

Prova un ciclo while e controllalo con un input da tastiera ...

iker1
13-04-2012, 22:48
Ok grazie ... diciamo che la cosa del for un istruzione aggiuntiva che volevo mettere io ma non mi chiesta esplicitamente nel testo del programma quindi potrei anche non metterla

Loading