piccolo problemino in c!

Messaggioda peppesmile » 08/05/2006, 16:23

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
peppesmile
Junior Member
Junior Member
 
Messaggio: 35 di 127
Iscritto il: 01/03/2006, 17:58
Località: italia

Messaggioda eafkuor » 08/05/2006, 17:01

oddio questo l'avro fatto si e no 4/5 anni fa, fa schifo, non so neanche se funziona, comunque eccotelo :)
Codice:
#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;
}
Gauss è morto, Euler è morto, e io stesso non mi sto sentendo molto bene...
eafkuor
Senior Member
Senior Member
 
Messaggio: 818 di 1106
Iscritto il: 08/03/2004, 15:59
Località: Italy

Messaggioda eafkuor » 08/05/2006, 17:02

ah, è in c++:

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

corrisponde a

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


poi le altre cose si capiscono
Gauss è morto, Euler è morto, e io stesso non mi sto sentendo molto bene...
eafkuor
Senior Member
Senior Member
 
Messaggio: 819 di 1106
Iscritto il: 08/03/2004, 15:59
Località: Italy

Messaggioda peppesmile » 08/05/2006, 17:06

grazie mille
comunque non è che ti trovi qualcosa di più semplice? lo so chiedo troppo
peppesmile
Junior Member
Junior Member
 
Messaggio: 36 di 127
Iscritto il: 01/03/2006, 17:58
Località: italia

Messaggioda eafkuor » 08/05/2006, 17:15

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
Gauss è morto, Euler è morto, e io stesso non mi sto sentendo molto bene...
eafkuor
Senior Member
Senior Member
 
Messaggio: 821 di 1106
Iscritto il: 08/03/2004, 15:59
Località: Italy

Messaggioda peppesmile » 08/05/2006, 17:26

ok adesso provo a farlo in maniera molto semplice e te lo posto per vedere se va bene
peppesmile
Junior Member
Junior Member
 
Messaggio: 37 di 127
Iscritto il: 01/03/2006, 17:58
Località: italia

Messaggioda eafkuor » 08/05/2006, 19:03

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 :-)
Gauss è morto, Euler è morto, e io stesso non mi sto sentendo molto bene...
eafkuor
Senior Member
Senior Member
 
Messaggio: 824 di 1106
Iscritto il: 08/03/2004, 15:59
Località: Italy

Messaggioda peppesmile » 09/05/2006, 21:17

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
peppesmile
Junior Member
Junior Member
 
Messaggio: 38 di 127
Iscritto il: 01/03/2006, 17:58
Località: italia

Messaggioda lorven » 09/05/2006, 23:01

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

Codice:
#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
Ultima modifica di lorven il 10/05/2006, 12:41, modificato 1 volta in totale.
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 120 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda eafkuor » 10/05/2006, 12:37

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
Gauss è morto, Euler è morto, e io stesso non mi sto sentendo molto bene...
eafkuor
Senior Member
Senior Member
 
Messaggio: 828 di 1106
Iscritto il: 08/03/2004, 15:59
Località: Italy

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite