Salve, sto scrivendo un programma il quale, ad un certo punto, accetta numeri interi in ingresso.
Volevo creare un controllo, che in caso di immissione di numeri decimali, scarti tutto ciò che viene dopo il punto decimale (punto compreso), senza looppare appena si sbaglia.
Per chiarezza posto l'intero codice:
codice:
#include <stdio.h>
#define MAXDIM 20
main()
{
char c, nomi[MAXDIM][50],cognomi[MAXDIM][50];
int n, voti[MAXDIM][8];
printf("\n\t\t* REGISTRO DEI VOTI DEGLI STUDENTI *\n\n");
do {
printf("\t\t1. Crea database studenti\n\t\t2. Registra voti studenti\n\t\t3. Visualizza risultati\n\t\t4. Esci\n");
printf("\t\t\t\t\t\t\tScelta:");
while((c = getc(stdin)) != EOF && c != '\n' && c != '1' && c != '2' && c !='4');
printf("\n");
if (c=='1') {
int i;
printf("// Creazione database studenti\n\n");
do {
printf("numero di studenti(massimo 20): ");
scanf("%d",&n);
} while(i>=2 && i<MAXDIM+1);
for(i=1;i<n+1;i++) {
printf("\nSTUDENTE No.%d\n",i);
printf("Nome: ");
scanf("%s",nomi[i-1]);
printf("Cognome: ");
scanf("%s",cognomi[i-1]);
}
printf("\n\n");
while(!getchar());
}
if (c=='2') {
int i,j;
printf("// Registrazione voti studenti\n\n");
printf("[inserire solo numeri interi compresi tra 0 e 10]\n\n");
for(i=0;i<n;i++) {
for(j=0;nomi[i][j]!='\0' || cognomi[i][j]!='\0';j++) {
if (nomi[i][j]<123 && nomi[i][j]>96)
nomi[i][j] -= 32;
if (cognomi[i][j]<123 && cognomi[i][j]>96)
cognomi[i][j] -= 32;
}
printf("%s %s\n",nomi[i],cognomi[i]);
for(j=0;j<8;j++) {
do {
printf("prova #%d voto:",j+1);
scanf("%d",&voti[i][j]);
} while(voti[i][j]>=0 && voti[i][j]<11);
}
printf("\n\n");
}
while(!getchar());
}
} while (c!='4');
}
la scanf fa riferimento ala scelta c='2'