
Originariamente inviata da
cip999
Sì, è sufficiente che tu scriva
prima del return.
Questa soluzione non è portabile e funziona solo su sistemi windows.
Una soluzione portabile è aggiungere un
codice:
while(getchar()!='\n');
dopo l'ultimo scanf e un
prima del return. Il motivo è spiegato in molte altre discussioni nel forum.
codice:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
float A,B,c,d,e;
printf("Inserire dati: \n");
printf("Prezzo: ");
scanf ("%f",&A);
printf("Sconto: ");
scanf("%f", &B);
while(getchar()!='\n');
c=A*B;
d=c/100;
e=A-d;
printf("\nCartellino: \n");
printf("Prezzo: %f\n", A);
printf("Sconto Applicato: %f\n", B);
printf("Prezzo Finale: %f\n", e);
printf("\nPremere un tasto per continuare...");
getchar();
return 0;
}
Che, espresso un po' meglio, può essere riscritto:
codice:
#include <stdio.h>
#include <stdlib.h>
#define flush_stdin() while(getchar()!='\n')
#define wait(message) {printf(message); getchar();}
int main(void) {
float A,B,c,d,e;
printf("Inserire dati: \n");
printf("Prezzo: ");
scanf ("%f",&A);
printf("Sconto: ");
scanf("%f", &B);
flush_stdin();
c=A*B;
d=c/100;
e=A-d;
printf("\nCartellino: \n");
printf("Prezzo: %f\n", A);
printf("Sconto Applicato: %f\n", B);
printf("Prezzo Finale: %f\n", e);
wait("\nPremere un tasto per continuare...");
return 0;
}