Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383

    [c]visualizzazione stringhe

    Ciao, sto completando lo sviluppo di un programma, che è un registro dei voti degli studenti.
    Sono all'ultima parte, cioè la visualizzazione dei risultati. ho provato a scrivere i nomi degli studenti in una tabella, ma ricevo degli errori in compilazione:
    codice:
    voti.c: In function ‘main’:
    voti.c:63: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
    questo è il codice del programma (provvisorio):
    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 != '3' && c !='4');
         printf("\n");
         if (c=='1') {
             int i;
             printf("// Creazione database studenti\n\n");
             do {
                 float num;
                 printf("numero di studenti(massimo 20): ");
                 scanf("%f",&num);
                 n = (int)num;
             } while(n<2 || n>MAXDIM);
             for(i=0;i<n;i++) {
                 printf("\nSTUDENTE No.%d\n",i+1);
                 printf("Nome: ");
                 scanf("%s",nomi[i]);
                 printf("Cognome: ");
                 scanf("%s",cognomi[i]);
             }
             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 {
                         float voto;
                         printf("prova #%d voto:",j+1);
                         scanf("%f",&voto);
                         voti[i][j] = (int)voto;
                     } while(voti[i][j]<0 || voti[i][j]>10);
                 }
                 printf("\n\n");
             }
             while(!getchar());
         }
         if (c=='3') {
             int i;
             printf("// Visualizzazione dei risultati\n\n");
             for(i=0;i<n;i++) 
                 printf("%s. %s\n",nomi[i][0],cognomi[i]);
             while(!getchar());
         }    
     } while (c!='4');
    }
    mi sembra strano l'errore che ricevo in compilazione trattandosi di stringhe

  2. #2
    Come ti segnala il compilatore l'errore è alla riga 63

    printf("%s. %s\n",nomi[i][0] ,cognomi[i]);

    la printf si aspetta un puntatore, non un char.

    PS
    la funzione main deve restituire un int.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Scrivendo %c per il primo argomento ho risolto il problema.

    questo è l'output attuale:
    codice:
    cristiancozzolino@cristian-laptop:~/programmazione$ ./voti
    
    		* REGISTRO DEI VOTI DEGLI STUDENTI *
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:1
    
    // Creazione database studenti
    
    numero di studenti(massimo 20): 3
    
    STUDENTE No.1
    Nome: Mario
    Cognome: Rossi    
    
    STUDENTE No.2
    Nome: CARLO
    Cognome: VERDI
    
    STUDENTE No.3
    Nome: maria
    Cognome: Bianchi
    
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:2
    
    // Registrazione voti studenti
    
    [inserire solo numeri interi compresi tra 0 e 10]
    
    MARIO ROSSI
    prova #1 voto:5
    prova #2 voto:6.3
    prova #3 voto:2
    prova #4 voto:20
    prova #4 voto:4
    prova #5 voto:2445
    prova #5 voto:3.5
    prova #6 voto:6
    prova #7 voto:7
    prova #8 voto:-4
    prova #8 voto:4
    
    
    CARLO VERDI
    prova #1 voto:4
    prova #2 voto:7
    prova #3 voto:4
    prova #4 voto:3
    prova #5 voto:1
    prova #6 voto:567
    prova #6 voto:8
    prova #7 voto:7
    prova #8 voto:5
    
    
    MARIA BIANCHI
    prova #1 voto:45
    prova #1 voto:3
    prova #2 voto:6
    prova #3 voto:9 
    prova #4 voto:3
    prova #5 voto:10
    prova #6 voto:0
    prova #7 voto:5
    prova #8 voto:3
    
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:3
    
    // Visualizzazione dei risultati
    
    M. ROSSI
    C. VERDI
    M. BIANCHI
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:
    Adesso lo schema che vorrei creare è questo:
    codice:
                               #1   #2   #3   #4   #5   #6  #7  #8   Media studente
    Nome1                                                                       
    Nome2                                                                       
    Nome3                                                                      
    Nome4                                                                       
    ....                                                                            
    Media prove                                                      Media globale
    il problema è che non so come far partire i voti da #1

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Questa è la nuova versione del programma, comunque la devo finire:
    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 != '3' && c !='4');
         printf("\n");
         if (c=='1') {
             int i;
             printf("// Creazione database studenti\n\n");
             do {
                 float num;
                 printf("numero di studenti(massimo 20): ");
                 scanf("%f",&num);
                 n = (int)num;
             } while(n<2 || n>MAXDIM);
             for(i=0;i<n;i++) {
                 printf("\nSTUDENTE No.%d\n",i+1);
                 printf("Nome: ");
                 scanf("%s",nomi[i]);
                 printf("Cognome: ");
                 scanf("%s",cognomi[i]);
             }
             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 {
                         float voto;
                         printf("prova #%d voto:",j+1);
                         scanf("%f",&voto);
                         voti[i][j] = (int)voto;
                     } while(voti[i][j]<0 || voti[i][j]>10);
                 }
                 printf("\n\n");
             }
             while(!getchar());
         }
         if (c=='3') {
             int i;
             printf("// Visualizzazione dei risultati\n\n");
             printf("\t\t    ");
             for(i=0;i<8;i++)
                 printf("    #%d",i+1);
             printf("     MEDIA\n");
             for(i=0;i<n;i++) 
                 printf("%c.%-18s\n",nomi[i][0],cognomi[i]);
             printf("\n\n");
             while(!getchar());
         }    
     } while (c!='4');
    }
    E questo è un semplice output:
    codice:
    		* REGISTRO DEI VOTI DEGLI STUDENTI *
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:1
    
    // Creazione database studenti
    
    numero di studenti(massimo 20): 5
    
    STUDENTE No.1
    Nome: Marco
    Cognome: Terzi
    
    STUDENTE No.2
    Nome: Franco
    Cognome: Battaglia
    
    STUDENTE No.3
    Nome: Gieseppe
    Cognome: Brambilla
    
    STUDENTE No.4
    Nome: Sonia
    Cognome: Cianfanelli
    
    STUDENTE No.5
    Nome: Ugo
    Cognome: Incostante
    
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:3
    
    // Visualizzazione dei risultati
    
    		        #1    #2    #3    #4    #5    #6    #7    #8     MEDIA
    M.Terzi             
    F.Battaglia         
    G.Brambilla         
    S.Cianfanelli       
    U.Incostante        
    
    
    		1. Crea database studenti
    		2. Registra voti studenti
    		3. Visualizza risultati
    		4. Esci
    							Scelta:4

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.