Vai al contenuto

Problema printf e cicli.


hell_flip

Messaggi raccomandati

Salve a tutti, ieri mi sono imbattuto in questo problema strano, per me. Ho scritto un main.c con xcode, l'ho compilato e quando lo vado ad eseguire la parte precedente al ciclo funziona, quando ricomincia il programma con il ciclo mi viene stampata 2 volte la printf con la mia domanda. Il problema è che lo stesso programma in windows funziona alla perfezione. Dove sta l'inceppo? nel main o in xcode? posto il main

Ringrazio in anticipo dell'interesse.Saluti :lol:

#include <stdio.h>

#include <stdlib.h>

int add (int a , int :ciao:;

int prod (int a , int ;);

int main ()

{

char x;

int a,b,somma,prodotto;

do {

printf("Che operazione vuoi eseguire?\n\n ");

printf("S=Somma, P=Prodotto, Q=Uscita ");

scanf("%c",&x);

switch (x)

{

case 'S' :

printf("Inserisci il valore del primo addendo\n\n");

scanf("%d",&a);

fflush(stdin);

printf("\n\nInserisci il valore del secondo addendo\n\n");

scanf("%d",&;);

somma= add(a,:fischio:;

printf("\n\nLa somma e' %d\n\n", somma);

break;

case 'P' :

printf("Inserisci il valore del primo fattore\n\n");

scanf("%d",&a);

fflush(stdin);

printf("Inserisci il valore del secondo fattore\n\n");

scanf("%d",&:fischio:;

prodotto=prod(a,:fischio:;

printf("\n\nIl prodotto e' %d\n\n", prodotto);

break;

case 'Q' : exit(0);

}

}while (x!='S'|x!='P');

return 0;

}

int add (int a, int :lol:

{

int somma;

somma= a+b;

return somma;

}

int prod (int a , int :lol:

{

int prodotto;

prodotto= a*b;

return prodotto;

}

Link al commento
Condividi su altri siti

Sostanzialmente tu leggi un solo carattere con lo scanf quando in realtà ne immetti 2 (il carattere e l'invio).

A questo punto l'invio rimane nello stdin che sarà il prossimo carattere letto e quindi zompa tutti i controlli dato che non c'è nessun controllo che viene attivato dall'invio.

Devi scaricare il carattere \n dallo stdin dopo aver letto il carattere.

Dio@paradiso:~$ gcc -o Terra World.cpp

Link al commento
Condividi su altri siti

  • 5 settimane dopo...

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...