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:
la scanf fa riferimento ala scelta c='2'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'); }

Rispondi quotando