Piccolo problemino in c!

peppesmile
Salve a tutti

Avrei un problemino con il linguaggio c.

Vorrei creare una calcolatrice con l'istruzione switch solo che essendo da poco che lo uso commetto parecchi errori di sintassi
che non so riconoscere.

Per favore qualcuno potrebbe postarmi il codice di questo banale programmino, in maniera più semplice possibile anche con solo 2 operazioni? es somma e differenza in modo da poter eseguire l'operazione richiesta e se l'operazione non compare tra le predefinite stampare "errore" o una cavolata qualsiasi.

vi ringrazio tutti anticipatamente :D

Risposte
eafkuor1
oddio questo l'avro fatto si e no 4/5 anni fa, fa schifo, non so neanche se funziona, comunque eccotelo :)
#include <iostream>

using namespace std;

double r;

void continu(){

   char s;
   double n;
   
   char *sign;
   double n1, n2;

   while(n1){
      cout << "- ";
      cin >> sign;
      if(*sign=='=') break;

      if(!isdigit((int)*sign)){
         cin >> n1;
         switch((int)*sign){
            case '+':
               r=n1+r;
               break;

            case '-':
               r=r-n1;
               break;

            case '*':
               r=n1*r;
               break;

            case '/':
               r=r/n1;
               break;
         }
      }
      else {
         cin >> s >> n2;
         n1=atof(sign);

         switch(s){

            case '+':
               r=n1+n2;
               break;

               case '-':
               r=n1-n2;
               break;

            case '*':
               r=n1*n2;
               break;

            case '/':
               r=n1/n2;
               break;
         }

      }
      cout << "- " << r << "\n";
   }
   cout << "- The result is: " << r << "\n";
   return;
}

int main(){

   char sign;
   double n1, n2;

   cout << "SCE [Simple Calculator by Eafkuor]\nPut = to end\n";
   cout << "- ";
   cin >> n1 >> sign >> n2;

   switch(sign){
      case '+':
         r=n1+n2;
         break;

      case '-':
         r=n1-n2;
         break;

      case '*':
         r=n1*n2;
         break;

      case '/':
         r=n1/n2;
         break;

   }

   cout << "- " << r << "\n";
   continu();
   return 0;
}

eafkuor1
ah, è in c++:

cout << "- The result is: " << r << "\n";

corrisponde a

printf("- The result is: %f\n", r);


poi le altre cose si capiscono

peppesmile
grazie mille
comunque non è che ti trovi qualcosa di più semplice? lo so chiedo troppo

eafkuor1
Per essere una "calcolatrice" in c/c++ questa è fin troppo semplice; per capire come funziona basta studiarsela un po'. Se ti fa comodo traducila prima in c.

Comunque chiamarla calcolatrice è un insulto alle calcolatrici :-D

peppesmile
ok adesso provo a farlo in maniera molto semplice e te lo posto per vedere se va bene

eafkuor1
Mi raccomando, non cominciare a scrivere il programma senza farti prima un progetto, altrimenti ti viene fuori una cosa incasinatissima come la mia. Prima di iniziare a programmare decidi quali saranno le funzionalità che dovranno essere supportate dal programma, definisci la struttura della main, e fai un elenco delle funzioni che ti serviranno per implementare tutte le funzionalità programma.
Detto questo, buona programmazione :-)

peppesmile
ho dei dubbi su come procedere. non è che potresti postarmi un programmino che fa la somma e la differenza con lo switch?

scusa se rompo un po però capiscimi mi serve per la scuola perchè giovedì ho compito e penso che potrebbe metterci un
qualcosa del genere e non vorrei sbagliare.

grazie :D grazie :-D

lorven
Una calcolatrice C ridotta veramente all'osso. :!:

#include <stdio.h>

main()
{
 double op1, op2, ris;
 unsigned int scelta;
 
 printf("##################################\n");
 printf("#CALCOLATRICE   -   prototipo    #\n");
 printf("##################################\n\n\n");
 printf("1- +\n");
 printf("2- -\n");
 printf("3- *\n");
 printf("4- /\n\n");
 printf("Scegli l'operazione: ");
 scanf("%d", &scelta);
 printf("\nprimo operando: ");
 scanf("%lf", &op1);
 printf("\nsecondo  operando: ");
 scanf("%lf", &op2);

 switch(scelta){
                 case 1 : 
                      ris=op1 + op2;
                          break;
                 case 2 : 
                      ris= op1 - op2;
                          break;
                 case 3 : 
                      ris= op1 * op2;
                          break;
                 case 4 :
                      ris= op1 / op2;
                          break;
                 default : printf("operatore errato");
                          break;
                }

 printf("%f%s",ris,"\n");

 system("pause");
 return(0);
}


Se il programma risulta, come credo, chiaro, consiglio di migliorarlo un po', ad esempio rendendo iterativo, controllando poi, nel caso di divisione, la correttezza degli operandi (evitando di calcolare n/0, 0/0), ecc. ecc.
Buon lavoro e in bocca al lupo per il compito! :D

eafkuor1
Direi anche di fare in modo che si possa usare come una calcolatrice normale, senza cose del tipo "Che tipo di operazione vuoi fare" :D

Comunque brava lorven, bell'esempio.
Sicuramente meglio del mio :-D

TomSawyer1
"eafkuor":

brava lorven


Ah, sei una ragazza? Pensavo proprio di no...

lorven
"Crook":
[quote="eafkuor"]
brava lorven


Ah, sei una ragazza? Pensavo proprio di no...[/quote]
:shock:

Temo che vi sbagliate ...

:-D

eafkuor1
oddio scusa, è che il nick mi sembrava da femmina :D

lorven
"eafkuor":
oddio scusa, è che il nick mi sembrava da femmina :D


"Lorven" forse ti ricorda una certa Sophia ... :lol:
ma questo nick deriva semplicemente dai primi caratteri anagrafici ;-)

peppesmile
grazie mille lorven non so come ringraziarti. se ti conoscessi ti offrirei un caffè.

grazie anche a te eafkuor.

ho aggiunto alla calcolatrice le condizioni di realtà per quanto riguarda la divisione e sto provando a rendere il programma più bello esteticamente.

grazie ancora

lorven
"peppesmile":
grazie mille lorven non so come ringraziarti. se ti conoscessi ti offrirei un caffè.

grazie anche a te eafkuor.

ho aggiunto alla calcolatrice le condizioni di realtà per quanto riguarda la divisione e sto provando a rendere il programma più bello esteticamente.

grazie ancora

Per combinazione, ho appena preso un caffè!
Ti ringrazio, è proprio come se me l'avessi offerto tu. :D
Ciao, e ancora buon compito!

peppesmile
scusate un ultima cosa per rendere il programma più sintetico potrei aggiungere la scelta dell'operazione all'interno dello switch ?

lorven
Non si può inserire la scelta dell'operazione all'interno dello switch, perchè questo deve attivare i vari calcoli a seconda della scelta già effettuata in precedenza! :!:

peppesmile
ok lo pensav anch'io comunque il programma funziona? io non lo ho ancora provato perchè sto cercando di renderlo più presentabile per un compito in modo che il prof non sospetti che me lo sono preparato a casa.

sai, piccoli segreti di studenti, ci sei passato anche tu o lo sei ancora?

lorven
La versione da me postata funzionava.
Non sono più studente, ahimè, da un bel po'. :cry:

TomSawyer1
"lorven":
[quote="Crook"][quote="eafkuor"]
brava lorven


Ah, sei una ragazza? Pensavo proprio di no...[/quote]
:shock:

Temo che vi sbagliate ...

:-D[/quote]

Ah, ecco. I conti mi tornano :D .

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.