Scanf di troppo

di il
4 risposte

Scanf di troppo

Buongiorno!
Innanzitutto buone feste a tutti, o voi ch'intrate in questo post
Per quanto riguarda gli affari, vi posto il codice e poi vi spiego:

int main() {
    float a,b,c,d,e,f,x,y,D;
    char esc;
    printf("#########################\n\n");
    printf("\tProgramma per la risoluzione di sistemi di primo grado a due incognite\n\n");
    printf("#########################\n\n");
    printf("\tCopyrighted %c by Andrea Marino\n\n", 184);
    printf("#########################\n\n");
    printf("Dato un sistema\n\tax + by = c \n\tdx + ey = f,\n\n Inserire i parametri a,b,c,d,e,f nell'ordine in cui vengono richiesti\n per ottenere le soluzioni x,y\n\n");
    printf("#########################\n\n");
    system("PAUSE");
    printf("Inserire il parametro a --> ");
    scanf("%f \n", &a);
    printf("Inserire il parametro b --> ");
    scanf("%f \n", &b);
    printf("Inserire il parametro c --> ");
    scanf("%f \n", &c);
    printf("Inserire il parametro d --> ");
    scanf("%f \n", &d);
    printf("Inserire il parametro e --> ");
    scanf("%f \n", &e);
    esc=getchar();
    printf("Inserire il parametro f --> ");
    scanf("%f \n", &f);
    D=e*a-d*b;
    printf("#########################\n\n");
    if (D==0) 
    {
       if (b/e==c/f)
       {
          printf("Il sistema di equazioni e' indeterminato.\n\n");
          esc=getchar();
       } else {
       printf("Il sistema di equazioni e' impossibile.\n\n");
       }
    } else {                   
    y=(f*a-d*c)/D;
    x=(c-b*y)/a;   
    printf("Le soluzioni del sistema sono:\n\tx=%g \n\ty=%g \n\n", x,y);
    }
    system("PAUSE");
    printf("#########################\n\n");
    printf("Grazie per aver utilizzato il nostro programma!\n\n");
    system("PAUSE");
    
    return 0;
}
In realtà il cuore del programma è facile facile, semplicemente prende i 6 coefficienti di un sistema di equazioni di primo grado e restituisce le soluzioni (con il metodo di risoluzione delle matrici). Adesso quando lo eseguo mi succede una cosa bizzarra: allo scanf per il parametro a e per il parametro f, mi chiede due volte il numero. In poche parole io inserisco il numero, premo invio e lui invece di passare direttamente all'istruzione successiva mi richiede il numero.
Ah, con un paio di esperimenti ho capito che il secondo numero che inserisco (questo "scanf di troppo") non conta un cavolo

Grazie per l'aiuto (so che lo farete )

4 Risposte

  • Re: Scanf di troppo

    Perché usi \n nella scanf?
  • Re: Scanf di troppo

    Woah!! Funziona!! Ma perchè mai allora il problema si presentava solo al primo e all'ultimo inserimento? Grazie, come puoi immaginare sono un neofita in C, vengo dal python. Ma quindi in scanf non si può stampare nulla a video, giusto? Perchè in python invece hai:
    " variabile = input("Testo a video") "

    Ah, che ne pensi del codice in sè? C'è qualcosa di obrobrioso o di poco conveniente da cambiare?
  • Re: Scanf di troppo

    Ma quindi in scanf non si può stampare nulla a video, giusto? Perchè in python invece hai:
    " variabile = input("Testo a video") "
    il 'format' dello scanf prevede che vengano passati parametri per il metodo di LETTURA a differenza di printf che esegue una SCRITTURA
    Ah, che ne pensi del codice in sè? C'è qualcosa di obrobrioso o di poco conveniente da cambiare?
    Mi sembra che vada bene... se proprio devo dirne una manca l'include di stdio necessaria per la definizione dello scanf.

    Ciao
  • Re: Scanf di troppo

    Ah si non ho copiato l'include, ma ce l'ho messo Grazie comunque!!
Devi accedere o registrarti per scrivere nel forum
4 risposte