Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    5

    [C] errore calcolatrice

    Ciao a tutti. sono un autodidatta del C quindi perdonatemi in anticipo se ho combinato casini con il codice
    ho provato a compilare la mia prima calcolatrice. però quando vado a fare una divisione qualsiasi il programma si blocca. il problema è che il compilatore non mi trova errori nel codice e io non riesco a capire il perchè... mi date una mano? graaazie!!
    codice:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
          int x;
          int y;
          char z;
          printf("Calcolatrice \n\n\n\n");
          printf("Ora puoi eseguire le operazioni \n");
          scanf("%d", &x);
          scanf("%c",&z);
          scanf("%d", &y);
     
          switch(z){
                    case '+':
                         printf("Questo e' il risultato= %d\n",x+y);
                         break;
                    case '-':
                         printf("Questo e' il risultato= %d\n", x-y);
                         break;
                    case '*':
                         printf("Questo e' il risultato= %d\n", x*y);
                         break;
                    case '/':
                         if(y=0){
                                 printf("Ma sei scemo a dividere per 0?!?!?! \n");
                                 }
                         printf("Questo e' il risultato= %d\n", x/y);
                         break;
                 
                         } 
                         getch();
                         
         }

  2. #2
    codice:
                         if(y==0){
    = è l'operatore di assegnamento
    == è l'operatore di confronto per uguaglianza
    Nel tuo codice stavi assegnando a y zero invece di controllare se era uguale a zero.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    5
    Ah ok grazie! risolto... però ora mi fa vedere il risultato ma si blocca lo stesso... come mai?

  4. #4
    Ho provato il programma (rimuovendo il riferimento a <conio.h> - che non è standard - e sostituendo la getch() - non standard neanche lei - con una getchar()) e non mi da problemi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    5
    mmm ho provato a mettere getchar() ma non va lo stesso.... boh sarà il mio pc... ti chiedo un'ultima cosa: come faccio a fare in modo che fatta un'operazione possa farne un'altra? cioè che non si chiuda la finestra del programma?

  6. #6
    Con un ciclo (for, while, do, a seconda di quello che vuoi ottenere).

    Dubito comunque che sia il tuo PC, che errore ti dà?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    5
    Quando divido per 0, mi viene fuori la scritta e poi compare la finestra di windows dicendo che calcolatrice.exe ha smesso di funzionare l'applicazione verrà chiusa. uso windows xp e dev C++ come compilatore

  8. #8
    Ah, be', giusto, in effetti non avevo provato a mettere 0... be', è normale, il messaggio viene visualizzato, ma il codice dopo di esso viene comunque eseguito. Per risolvere il problema, puoi o mettere un break subito dopo la printf del messaggio di errore (in questo modo si esce subito dallo switch), o mettere il codice che effettua la divisione in un else associato all'if del messaggio di errore, in modo che venga eseguito l'uno o l'altro blocco di codice.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    5
    Ottimo!!! grazie! con l'else funziona... ora ho un altro problema però... ho provato a mettere prima dello switch un while(1) per poi finita l'operazione poterne fare subito un'altra... però non funziona, o meglio mi continua a ripetere all'infinito "questo è il risultato= *" senza mai tornare alla possibilità di digitare le operazioni... come mai?

    codice:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
          int x;
          int y;
          char z;
          printf("Calcolatrice \n\n\n\n");
          printf("Ora puoi eseguire le operazioni \n");
          scanf("%d", &x);
          scanf("%c",&z);
          scanf("%d", &y);
          while(1)
          {
     
          switch(z){
                    case '+':
                         printf("Questo e' il risultato= %d\n",x+y);
                         break;
                    case '-':
                         printf("Questo e' il risultato= %d\n", x-y);
                         break;
                    case '*':
                         printf("Questo e' il risultato= %d\n", x*y);
                         break;
                    case '/':
                         if(y==0){
                                 printf("Ma sei scemo a dividere per 0?!?!?! \n");
                                 }
                         else{
                              printf("Questo e' il risultato= %d\n", x/y);
                              }
                         break;
                         }
                 
                         } 
                         getch();
                         
         }

  10. #10
    Guarda bene dove hai messo l'inizio del ciclo...
    Amaro C++, il gusto pieno dell'undefined behavior.

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.