Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti, sono nuovo nel forum, e come ho già spiegato nel mio post di presentazione sono alle prime armi con il C.
Per esercitarmi, ho cercato di creare una semplicissima calcolatrice in C, e ho ottenuto diversi risultati positivi, ma mai corrispondenti a quello che volevo.
Sono riuscito a creare delle calcolatrici "a scelte", che però non mi invitano più di tanto Il massimo che sono riuscito a fare, per il momento, è questo:
#include <stdio.h>
main(){
char operatore;
float numero1, numero2, risultato;
int i, e;
i=0;
while(i!=1){
printf("\t\tCalcolatrice\n\n");
printf("Inserisci l'Operatore: +,-,*,/\n");
scanf("\n%cn",&operatore);
if(operatore=='+'){
printf("\nHai scelto di effettuare un'addizione!\n");
printf("\nOra premi 'addendo,addendo'(Esempio:2,2) e poi invio\n");
scanf("\n%f,%f",&numero1,&numero2);
risultato=numero1+numero2;
}
if(operatore=='-'){
printf("\nHai scelto di effettuare una sottrazione!\n");
printf("\nOra premi 'numero1, numero2' (Esempio: 6,2)\n");
scanf("\n%f,%f",&numero1,&numero2);
risultato=numero1-numero2;
}
if(operatore=='*'){
printf("\nHai scelto di effettuare una moltiplicazione!\n");
printf("\nOra premi 'numero1, numero2' (Esempio: 6,2)\n");
scanf("\n%f,%f",&numero1,&numero2);
risultato=numero1*numero2;
}
if(operatore=='/'){
printf("\nHai scalto di effettuare una divisionen!\n");
printf("\nOra premi 'numero1, numero2' (Esempio: 6,2)\n");
scanf("\n%f,%f",&numero1,&numero2);
risultato=numero1/numero2;
}
printf("\nEcco il risultato:\n");
printf("\n\t%f", risultato);
printf("\n\nPer usare di nuovo la calcolatrice, premi due volte invio\n");
scanf("\n%cn",&e);
}
}
Il mio obbiettivo, però, era eliminare del tutto la scelta . Se provo a fare cose di questo tipo, non riesco a ottenere il risultato:
#include <stdio.h>
main(){
char operatore;
double risultato;
double numero1, numero2;
int i, e;
i=0;
while(i!=1){
printf("\t\tCalcolatrice\n\n");
printf("Inserisci 'numero1, operatore(+,-,*,/), numero2' \n\n");
scanf("%.0f,%cn,%.0f",&numero1,&operatore,&numero2);
if(operatore=='+'){
printf("\nHai scelto di effettuare un'addizione!\n");
risultato=numero1+numero2;
}
if(operatore=='-'){
printf("\nHai scelto di effettuare una sottrazione!\n");
risultato=numero1-numero2;
}
if(operatore=='*'){
printf("\nHai scelto di effettuare una moltiplicazione!\n");
risultato=numero1*numero2;
}
if(operatore=='/'){
printf("\nHai scalto di effettuare una divisionen!\n");
risultato=numero1/numero2;
}
printf("\nEcco il risultato:\n");
printf("%.0f", risultato);
printf("\n\nPer usare di nuovo la calcolatrice, premi due volte invio\n");
scanf("\n%d",&e);
}
}
Sapreste dirmi perchè non funziona e cosa dovrei cambiare? Grazie in anticipo!
Ultima modifica effettuata da Impronta Geek il 24/06/2009 alle 19:31
Grazie Mille. Io nel frattempo ero riuscito a farla funzionare così:
Codice sorgente - presumibilmente C++
#include <stdio.h>
main(){
char operatore;
float risultato;
float numero1, numero2;
int i, e;
i=0;
while(i!=1){
printf("\t\t\t\tCalcolatrice\n\n");
printf("Inserisci la tua operazione (+), sottrazione (-), moltiplicazione (*) o\ndivisione (/), fino a due numeri Es:30*3 \n\n");
scanf("%f%c%f",&numero1,&operatore,&numero2);
if(operatore=='+'){
printf("\nHai scelto di effettuare un'addizione!\n");
risultato=numero1+numero2;
}
if(operatore=='-'){
printf("\nHai scelto di effettuare una sottrazione!\n");
risultato=numero1-numero2;
}
if(operatore=='*'){
printf("\nHai scelto di effettuare una moltiplicazione!\n");
risultato=numero1*numero2;
}
if(operatore=='/'){
printf("\nHai scelto di effettuare una divisione!\n");
risultato=numero1/numero2;
}
printf("\nEcco il risultato:\n");
printf("%f\n\n\n", risultato);
}
}
Ora seguendo il tuo consiglio aggiungerò anche l'input con la virgola
Non mi accontento mai, però, e sto cercando di aggiungere un operatore ed un numero. Questo è quello che ho prodotto finora:
printf("\nHai scelto di effettuare un'espressione!\n");
risultato2=risultato+numero3;
printf("\nEcco il risultato dell'espressione:\n");
printf("%f\n\n\n", risultato2);
}
elseif(operatore2=='-'){
printf("\nHai scelto di effettuare un'espressione!\n");
risultato2=risultato-numero3;
printf("\nEcco il risultato dell'espressione:\n");
printf("%f\n\n\n", risultato2);
}
elseif(operatore2=='*'){
printf("\nHai scelto di effettuare un'espressione!\n");
risultato2=risultato*numero3;
printf("\nEcco il risultato dell'espressione:\n");
printf("%f\n\n\n", risultato2);
}
elseif(operatore2=='/'){
printf("\nHai scelto di effettuare un'espressione!\n");
risultato2=risultato/numero3;
printf("\nEcco il risultato dell'espressione:\n");
printf("%f\n\n\n", risultato2);
}
else{
printf("\nEcco il risultato:\n");
printf("%f\n\n\n", risultato);
}
}
}
Però come al solito ho sbagliato qualcosa
Comunque non capisco cosa sbaglio anche perchè i blocchi if ed else if mi pare funzionino abbastanza bene, solo che nell'eseguibile a volte fa calcoli sbagliati
La riga da modificare penso sia questa
Io non volevo le scelte, e su "Il Linguaggio C" sta scritto che è meglio usarlo quando ci sono... poi magari non cambia niente, ma per me è più facile con if, else if, ed else
Beh meglio così no? Tanto uno se vuole uscire chiude la finestra
()
Newbie
Messaggi: Iscritto:
Postato alle 15:15
Giovedì, 25/06/2009
beh, a questo punto non credo ti servano altri aiuti
la tecnica è uguale sia per 3 valori di input che per 152mila variabili
Se vuoi fare qualcosa di più complesso però, ad esempio qualcosa che valuti le stringhe del tipo (3 + 4) * (56 - 1 / 7) allora avrai bisogno di cambiare tecnica ed implementare un parser... è una cosa più avanzata, e non ti consiglio di affrontarla prima di aver imparato un po' di teoria.
Comunque se vuoi imparare, ti consiglio di studiare ed implementare qualcosa sugli alberi binari. Dopodichè ti darò una mano a scrivere un parser per le espressioni numeriche, anche con variabili dinamiche