Domanda Risolto Problema sicuramente banale in C

Stato
Discussione chiusa ad ulteriori risposte.

iSxND

Utente Bronze
3 Luglio 2018
30
11
4
30
Salve a tutti, sono un neofita di C e mi piacerebbe sicuramente approfondire e risolvere diverse mie lacune.
Come potete vedere è un codice molto semplice per cercare di capire l'uso dei cicli e della base della programmazione.

In questo "programma", volevo fare in modo che inizialmente, è obbligatorio digitare i primi tre numeri (ovviamente in modo casuale) e successivamente entrare nei cicli a seconda di quello che si ha deciso di digitare, il problema è che dopo aver digitato il primo numero entra direttamente nel primo ciclo, saltando tutta la prima parte delle sottrazioni...

Scusatemi se sto riscontrando problemi a questo livello di banalità...


C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int S, T, E, X, Y, Z;                                  

    printf("\nDigitare un numero: ");
    scanf("%d", &S);
    printf("\nDigitare un secondo numero: ");
    scanf("%d", &T);
    printf("\nDigitare un terzo numero: ");
    scanf("%d", &E);

    X = S - T;
    printf("\nIl primo risultato è: %d", X);

    Y = X + E;
    printf("\nIl secondo risultato è: %d", Y);

    Z = Y - T - E;
    printf("\nIl terzo risultato è: %d", Z);

    if( X > 10)
        printf("\nLa ottrazione è maggiore di 10");
        else
            printf("\nLa sottrazione è minore di 10");
    if( Y > 10)
        printf("\nLa sommatoria è maggiore di 10");
        else
            printf("\nLa sommatoria è minore di 10");
    if( Z > 10)
        printf("\nCalcolo finale");
    else
        if ( Z == 0)
        printf("\nIl risultato è uguale a Zero");
        else
        printf("\nIl risultato è minore di zero");
       
      printf("\nFINE");
       return 0;
}
 
Sinceramente a me funziona il codice. Sei sicuro di aver ri-compilato il sorgente dopo aver apportato le modifiche?
 
  • Mi piace
Reazioni: iSxND
Salve a tutti, sono un neofita di C e mi piacerebbe sicuramente approfondire e risolvere diverse mie lacune.
Come potete vedere è un codice molto semplice per cercare di capire l'uso dei cicli e della base della programmazione.

In questo "programma", volevo fare in modo che inizialmente, è obbligatorio digitare i primi tre numeri (ovviamente in modo casuale) e successivamente entrare nei cicli a seconda di quello che si ha deciso di digitare, il problema è che dopo aver digitato il primo numero entra direttamente nel primo ciclo, saltando tutta la prima parte delle sottrazioni...

Scusatemi se sto riscontrando problemi a questo livello di banalità...


C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int S, T, E, X, Y, Z;                                 

    printf("\nDigitare un numero: ");
    scanf("%d", &S);
    printf("\nDigitare un secondo numero: ");
    scanf("%d", &T);
    printf("\nDigitare un terzo numero: ");
    scanf("%d", &E);

    X = S - T;
    printf("\nIl primo risultato è: %d", X);

    Y = X + E;
    printf("\nIl secondo risultato è: %d", Y);

    Z = Y - T - E;
    printf("\nIl terzo risultato è: %d", Z);

    if( X > 10)
        printf("\nLa ottrazione è maggiore di 10");
        else
            printf("\nLa sottrazione è minore di 10");
    if( Y > 10)
        printf("\nLa sommatoria è maggiore di 10");
        else
            printf("\nLa sommatoria è minore di 10");
    if( Z > 10)
        printf("\nCalcolo finale");
    else
        if ( Z == 0)
        printf("\nIl risultato è uguale a Zero");
        else
        printf("\nIl risultato è minore di zero");
      
      printf("\nFINE");
       return 0;
}
Dopo ogni scanf prova ad inserire un getchar();.

Il problema è questo, stai chiedendo un numero ma quello che l'utente inserisce è, ad esempio: 15+ENTER. Quindi succede che le successive scanf prendono ENTER invece che altri numeri. Grazie al getchar il \n (codice di ENTER) verrà preso da lui invece che da scanf.

PS. Sono abbastanza sicuro ci siano altri modi per farlo, ad esempio modificato il formato dello scanf o flushando l'input, solo che non ho a portata di mano il compilatore per provare ;)
 
Sinceramente a me funziona il codice. Sei sicuro di aver ri-compilato il sorgente dopo aver apportato le modifiche?

Dopo svariati controlli pensando che inizialmente fosse un errore di codice non avevo controllato, se effettivamente avevo ri-compilato il sorgente, amen
Probabilmente per l'orario erano le 3:30, Grazie mille, scusatemi ancora.
 
  • Mi piace
Reazioni: OzMoMoH e 0xbro
Stato
Discussione chiusa ad ulteriori risposte.