PDA

Visualizza la versione completa : [c] compito con switch-case


Lalaith
15-03-2008, 10:06
Salve a tutti, sono una studentessa di informatica al quarto anno.. Il nostro professore ci ha assegnato un compito che però non riesco a fare.. Ci ha detto di creare un programma in C che data un operazione matematica (ad esempio 3*3, 3+3 ecc) con lo switch far riconoscere al pc quale operazione ho scritto per poterla eseguire...
Non ho mai utilizzato questo switch e su internet sono solamente riuscita a trovare questo schema e a capire solamente in linea teorica a cosa serve... :

switch (variabile)
{
case valore1:
istruzione1;
break;

case valore2:
istruzione2;
break;

case valoreN:
istruzioneN;
break;
}


qualcuno mi può dare una mano su come fare?

Samuele_70
15-03-2008, 10:14
Che cosa non hai capito ? :master: (cerca nel forum trovi molti esempi)

oregon
15-03-2008, 10:20
In realta' non e' chiaro il problema e come ci possa entrare lo switch...case

Precisa (con un esempio migliore ...) il problema che hai avuto dal professore ... cosa fornisci in input e cosa deve esserci in output ...

Lalaith
15-03-2008, 10:39
Originariamente inviato da oregon
cosa fornisci in input e cosa deve esserci in output ...
In input io devo dare un operazione matematica, e in output devo avere il risultato...

Prendendo lo schema che ho postato:


case valore1:
istruzione1;

Al posto di valore1 dovrei mettere se si verifica un certo caso, mentre sull'istruzione quello che deve fare il programma se quel caso è quello giusto... Ma sto in blocco non so come applicarlo nel mio problema... e cosa dovrei mettere al posto di variabile ?

oregon
15-03-2008, 10:44
Se non e' ben identificato l'input, non si puo' dire cosa devi mettere nelle variabili o quale codice scrivere ...

COSA vuol dire che in input devi dare una operazione matematica?

Cioe', COSA devi scrivere in input nel tuo programma ? Fai un ESEMPIO pratico ...

Ad esempio, hai un MENU da cui scegliere l'operazione (ad esempio, addizione, sottrazione, moltiplicazione, divisione ...) tramite un numero (1 per +, 2 per -, 3 per *, 4 per / ...), nel qual caso useresti lo switch-case, oppure devi fare in un altro modo ...?

1 - addizione
2 - sottrazione
3 - moltiplicazione
4 - divisione

input in una variabile v

input dei due operandi

switch(v)
{
case 1:
istruzioni per l'addizione dei due operandi
break;
case 2:
istruzioni per la sottrazione dei due operandi
break;
case 3:
istruzioni per la moltiplicazione dei due operandi
break;
case 4:
istruzioni per la divisione dei due operandi
break;
default:
operazione non valida
break;
}

...

Lalaith
15-03-2008, 10:51
Allora, l'unica cosa che il professore ci ha fatto vedere è il programma in esecuzione:


Scrivi operazione da eseguire: (e scrivo da tastiera) 3+3
Risultato: 6

---

Scrivi operazione da eseguire: 3-3
Risultato: 0

---

Scrivi operazione da eseguire: 3*3
Risultato: 9

---

Scrivi operazione da eseguire: 3/3
Risultato: 1
Resto: 0

oregon
15-03-2008, 10:55
Beh ... allora la faccenda si fa un po' piu' complessa ...

A parte lo switch-case (che non e' il punto fondamentale del problema), hai scritto la parte del programma che prende in input la stringa e la "esamina"?

Ovvero, devi avere prima di tutto, il codice che analizza la stringa in input, estrae il primo operando, l'operazione e il secondo operando ...

Solo dopo aver fatto questa parte, puoi inserire il carattere dell'operazione in una variabile (ad esempio, nella variabile oper di tipo char) e scrivere

switch(oper)
{
case '+';
istruzioni ...
break;
case '-';
istruzioni ...
break;
case '*';
istruzioni ...
break;
case '/';
istruzioni ...
break;
default:
operazione non consentita ...
}

flash.tato
15-03-2008, 15:12
Io farei un parser (formato da un tokenizer e un lexer), per maggiori info cerca su WikiPedia: http://en.wikipedia.org/wiki/Lexical_analysis

Samuele_70
15-03-2008, 15:27
Originariamente inviato da flash.tato
Io farei un parser (formato da un tokenizer e un lexer), per maggiori info cerca su WikiPedia: http://en.wikipedia.org/wiki/Lexical_analysis

L'utente, evidentemente alle prime armi, è in difficoltà ad usare uno switch,
e tu gli proponi ci creare un parser ? :confused:

flash.tato
15-03-2008, 15:33
Poi secondo me il problema non ce l'ha con lo switch ma nell'analisi della stringa data in input, e per questo gli ho proposto il parser che concettualmente è facile da creare basterebbe una routine che faccia il loop di tutti i caratteri presenti nell'array della stringa data in input e li riconosca.

A mio modo di vedere un parser se si capisce come funziona poi è facile da fare (sopratutto se devi fare il parsing di cose semplici come questa operazione 3 + 3).

ovviamente è solo una mia idea e anzi mi scuso di averla proposta se non è l'ideale per quanto richiedeva l'autore :)

Loading