[C]Creare una calcolatrice

Andare in basso

[C]Creare una calcolatrice

Messaggio  Admin il Lun Lug 25, 2011 4:45 pm

Usando quelle istruzioni che ho scritto nei precedenti post si può bennissimo creare una calcolatrice che esegue tutte le quattro operazioni.

Come prima cosa scriveremo quello che dovrà eseguire, in parole, scriviamo il primo passo:

eseguirà un ciclo while infinito, fino a che l'utente non digiterà -1
visualizzerà una scritta che li chiede di inserire un comando
subito dopo con l'uso di scanf li chiederà in input un numero
se l'utente digita 1
dovrà eseguire l'addizione
altrimenti se digita 2
eseguirà la sottrazione
altrimenti se digita 3
eseguirà la moltiplicazione
altrimenti se digita 4
eseguirà la divisione
quando avrà finito ogni operazione lo schermo si cancellerà e chiederà un nuovo commando

Importiamo la libreria standard (stdio.h)

#include<stdio.h>

Poi per risparmiare memoria dichiareremo quattro macro, una per ogni operazione:

#define ADDIZIONE 1
#define SOTTRAZIONE 2
#define MOLTIPLICAZIONE 3
#define DIVISIONE 4

PS è sempre buona norma scrivere le macro tutte in maiuscole, questo aiuterà a notarle meglio nel codice

Ora creeremo un ciclo while, che avrà termine quando l'utente digiterà -1, per farlo uscire useremo una istruzione break;

Ricordo che per importargli un comando useremo la variabile "command", inizializzata a 0, perchè se non avesse questo valore di partenza non la potremmo usare nel while.

Faccio un "check-point" scrivendo tutto il codice a cui siamo arrivati fino ad ora, con i relativi commenti:

/*calcolatrice*/
/*librerie e macro*/
#include<stdio.h> /*libreria standard*/
#define ADDIZIONE 1
#define SOTTRAZIONE 2
#define MOLTIPLICAZIONE 3
#define DIVISIONE 4

/*main*/
int main (void) {
int command = 0; /*variabile per fargli impartire un comando*/

while (command != -1) { /*crea un ciclo while per non far terminare il programma alla fine
di una operazione*/

} /*fine while*/

return 0;
} /*fine main*/

D'ora in poi tutto il codice che scriveremo sarà dentro a quel while.

Per migliorarne l'usabilità aggiungeremo un comando "5" che sarà l'help, quindi scriveremo una printf con in seguente testo:
Digitare un comando, oppure 5 per help:
In questa printf non ci andrà \n in quanto ritengo che sia meglio esteticamente, ma ognuno è libero di scegliere.

Ecco che qui scatta la scanf, per poter immagazzinare il valore: scanf ("%d", &command);

Ora siamo nel cuore del programma la sequenza di if, ne creeremo una catena cosi:

if (command == 1) { /*primo if*/

}
else if (command == 2) {

}
else if (command == 3) {

}
else if (command == 4) {

}
else if (command == 5) {

}
else {

}

Ecco che lo “scheletro” è fatto.

Iniziamo a scrivere nel primo if, dichiareremo due variabili, chiamate addendo1 e addendo2, poi le chiederemo in input e ne visualizzerà la somma, praticamente la stessa logica del programma per sommare due numeri.

Ora basta eseguire la stessa cosa con tutti gli if cambiando i rispettivi segni, a parte nel quinto dove c'andrà un elenco dei comandi e nell'else, cioè se l'utente inserisce un comando che non è fra quei cinque, prima di tutto controllerà se è uguale a -1, poi se non lo è imposterà command a 0 e ricomincerà il ciclo while.

Ecco che si otterà il seguente codice:


#include<stdio.h> /*libreria standard*/
#define ADDIZIONE 1
#define SOTTRAZIONE 2
#define MOLTIPLICAZIONE 3
#define DIVISIONE 4

/*main*/
int main (void) {
int command = 0; /*variabile per fargli impartire un comando*/

while (command != -1) { /*crea un ciclo while per non far terminare il programma alla fine
di una operazione*/
if (command == 1) {
int addendo1;
int addendo2;

scanf ("%d", &addendo1);
scanf ("%d", &addendo2);

printf ("\n");

printf ("Risultato: %d", addendo1 + addendo 2);
}
else if (command == 2) {
int addendo3;
int addendo4;

scanf ("%d", &addendo3);
scanf ("%d", &addendo4);

printf ("\n");

printf ("Risultato: %d", addendo3 - addendo 4);
}
else if (command == 3) {
int addendo5;
int addendo 6;

scanf ("%d", &addendo5);
scanf ("%d", &addendo6);

printf ("\n");

printf ("Risultato: %d", addendo5 * addendo 6);
}
else if (command == 4) {
int addendo7;
int addendo 8;

scanf ("%d", &addendo7);
scanf ("%d", &addendo8);

printf ("\n");

printf ("Risultato: %d", addendo7 + addendo Cool;
}
else if (command == 5) {
printf (I comandi disponibili: \n");
printf (1. Addizione \n");
printf (2. sottrazione \n");
printf (3. moltiplicazione \n");
printf (4. divisione \n");
}
else {
if (command == -1) {
break;
}
command = 0;
printf ("Comando non valido\n");
}

} /*fine while*/

return 0;
} /*fine main*/

Per rendere l'aspetto estetico è meglio mettere un
printf ("\n");
alla fine di ogni if.

Un saluto!
avatar
Admin
Admin
Admin

Messaggi : 148
Punti : 15842
Reputazione : 0
Data d'iscrizione : 24.04.11
Età : 39
Località : Emiglia Romagna

Visualizza il profilo http://c88software.blogspot.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum