Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Calcolatrice semplice in C

    Ciao a tutti, sto impazzendo con questo programma semplicissimo...dovete eseguirlo per capire...penso...

    vorrei che la calcolatrice si iterasse all'infinito dopo la prima iterazione...la prima operazione funziona, poi quando vado a mettere il secondo operatore e relativo numero è come se prendesse l'operatore come carattere vuoto (anzi è così...perchè mi stampa un carattere vuoto se gli chiedo di stamparmi l'operatore)...mi sapete aiutare???

    GRAZIE

    ecco il codice...
    codice:
    #include <stdio.h>
    #include <math.h> 
    #include <conio.h>
    
    using namespace std;
    
    float a,b;
    float result=0.0;
    char o;
    bool go=true;
    
    int main()
    {
        printf("...Calculator is ON...\n\n");
        while(1){
        printf("\nresult= %f",result);
        printf("\ninsert the operator((+ - * /):");
        char o = getchar();
        while (getchar() != '\n');
        printf("\nInserire numero da sommare:");
        scanf("%f",&a);
        printf("operator is : %c",o);
        if (o=='+')
        result=result+a;
        else if(o=='-')
        result=result-a;
        else if(o=='*')
        result=a*result;
        else if(o=='/')
        result=result/a;
        else
        printf("\nIMPOSSIBLE!");
        //printf("\nrisultato: %f",c);
                  }
        getch();
        return(0);
    }
    L'impossibile richiede solo più tempo...

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    guarda ci sono dei problemi quando vai a fare questa istruzione:
    codice:
    char o = getchar();
    in quanto la prima iterazione ti va bene, ma inseguito la getchar() fa casino con il '\n' penso!
    perchè la getchar() di sopra va a leggere l'invio (\n) che dai quando premi invio per inserire il numero da sommare! non so se mi sono spiegato bene...il tutto è risolvibile in questo semplice modo anche se magari non tutti apprezzano forse...ma se qualcuno ha una soluzione migliore...può suggertirtela...io per ora ti posto la mia!
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    float a,b;
    float result=0.0;
    char o;
    char invio; // \n da prendere e buttare sostanzialmente
    
    int main()
    {
        printf("...Calculator is ON...\n\n");
        while(1){
            printf("\nresult= %f",result);
            printf("\ninsert the operator((+ - * /):");
            char o = getchar();
            printf ("SUKA STO CAZZO LA VAR O È: %c\n", o);
            while (getchar() != '\n');
                printf("\nInserire numero da sommare:");
                scanf("%f%c",&a, &invio);
                printf("operator is : %c",o);
            if (o=='+')
                result=result+a;
            else if(o=='-')
                result=result-a;
            else if(o=='*')
                result=a*result;
            else if(o=='/')
                result=result/a;
            else
                printf("\nIMPOSSIBLE!");
                //printf("\nrisultato: %f",c);
        }
        getch();
        return(0);
    }
    con la variabile char invio, vado ad immagazinare il \n che si genera appena premo invio per insierire il numero in modo da far eseguire correttamente la getchar()!
    se trovi altri errori o se nn mi sn spiegato bene...scrivi qua...
    ciao
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Originariamente inviato da MrX87
    codice:
    printf ("SUKA STO CAZZO LA VAR ... );

    @ minidiable
    codice:
    scanf("%f%*c",&..);
    Dovrebbe andar bene.
    Se poi vuoi iterare puoi usare il ciclo do-while.

  4. #4
    printf ("SUKA STO CAZZO LA VAR ... );
    Non credo che da regolamento puoi postare frasi del genere, però mi ha fatto ridere...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Probabilmente era una printf() di debug che ha dimenticato di togliere
    every day above ground is a good one

  6. #6
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    OOOOPPPPPSSSSSSSS
    Non credo che da regolamento puoi postare frasi del genere, però mi ha fatto ridere...
    bhè si ineffetti non penso proprio si potrebbe...però come suggerisce YuYevon:
    Probabilmente era una printf() di debug che ha dimenticato di togliere
    era solo una printf "molto creativa" per il debug che mi sono dimenticato di cancellare....chiedo scusa a tutti...spero non capiterà più!
    ciao ciao
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.