Problema in C, programma voto

di il
31 risposte

31 Risposte - Pagina 2

  • Re: Problema in C, programma voto

    oregon ha scritto:


    justin99 ha scritto:


    non va purtroppo, grazie dell'aiuto
    Beh alla faccia della fiducia... Uno risponde con la soluzione tu provi il suggerimento successivo sbagliato.

    Ma chi me lo fa fare a rispondere?
    Stavo appunto cercando ma senza risultato, ho provato a definire la dimensione, ho cambiato i valori ma niente, stesso problema(continua sotto)
    #include <stdio.h>
    #include <string.h>
    #define BUFFER_LENGTH 255
    struct studenti{
    	char nome[BUFFER_LENGTH];
    	float voto;
    };
    
    struct studenti studente[100];
    
    int i=0,a=0,c=0;
    float max,min=9999999,media=0;
    char stop[]="Stop";
    
    
    void stampa();
    
    int main(){
    	printf("\n\t\t\t\t\tBenvenuto!\n\n");
    	printf("Questo programma calcola il voto massimo, minimo e medio di un certo numero di studenti");
    	printf("\nPer fermare il programma digitare 'Stop' alla richiesta del nome");
    	do{
    		printf("\nInserire NOME e COGNOME dello studente: ");
    		fgets(studente[i].nome, BUFFER_LENGTH, stdin);
    		if(strcmp (stop,studente[i].nome) == 0){
    			stampa();
    			return 0;
    		}
    		printf("Inserisci voto: ");
    		scanf("%.2f", &(studente[i]).voto);
    		if(studente[i].voto > max) {
                max = studente[i].voto;
                }
            if(studente[i].voto < min){
                min = studente[i].voto;
                }
            i++;
            media=media+studente[i].voto;
            c++;
        	}while(a==0);
    
    }
    
    
    
    void stampa(){
    	for(int b=0; b<i; b++){
    		printf("\nNome studente: %s Voto: %.2f",studente[b].nome,studente[b].voto);
    		printf("Voto massimo: %.2f", max);
    		printf("Voto minimo: %.2f", min);
    		media=media/c;
    		printf("Voto medio: %.2f", media);
    		break;
    	}
    	
    }

    Poi, scusami, non per essere scortese nei tuoi confronti, se io ero online, perché non potevo rispondere a uno che, come te, ha gentilmente impiegato il suo tempo per cercare di risolvere un mio problema? Ho 1 ora che sto cercando, ma non riesco a trovare la soluzione, e preferivo cercare prima di risponderti dopo neanche 5 minuti.Ho un altra domanda, ma se io facessi il programma in C++, l'fgets non c'è vero?
  • Re: Problema in C, programma voto

    Non è che non devi rispondere, chi l'ha detto? Anzi, il fatto è che hai completamente ignorato la mia risposta. Eri online e potevi rispondermi, no?

    Non devi cambiare valori o dimensioni ma cancellare il buffer di input dopo la scanf. E c'è nel forum come fare. Così risolvi.

    La fgets la puoi usare anche in c++, chi lo vieta?
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Non è che non devi rispondere, chi l'ha detto? Anzi, il fatto è che hai completamente ignorato la mia risposta. Eri online e potevi rispondermi, no?
    Inutile andare avanti con queste discussioni, lo sappiamo bene tutti e due che se si inizia non si finisce più, quindi mi scuso io per non averti risposto.
    Cercando avevo trovato questo:
    while(getchar() != '\n');
    è l'unico modo per cancellare il buffer? Grazie comunque. Poi per definire un char devo scrivere così?
    char stop[]="Stop";
    . Perchè se voglio confrontare le due stringe, non mi riconosce Stop e va avanti
  • Re: Problema in C, programma voto

    Per la scanf va bene... Mettilo dopo la scanf stessa.

    In c++ se usi la cin allora userai il metodo ignore di cin...

    Per lo Stop vedrai nel forum in altri thread che la fscanf aggiunge un carattere alla fine della stringa. Devi toglierlo o aggiungi anche il \n allo Stop
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Per la scanf va bene... Mettilo dopo la scanf stessa.

    In c++ se usi la cin allora userai il metodo ignore di cin...

    Per lo Stop vedrai nel forum in altri thread che la fscanf aggiunge un carattere alla fine della stringa. Devi toglierlo o aggiungi anche il \n allo Stop
    Sono arrivato a questo punto:
    #include <stdio.h>
    #include <string.h>
    #define BUFFER_LENGTH 255
    
    struct studenti{
    	char nome[BUFFER_LENGTH];
    	float voto;
    };
    
    struct studenti studente[100];
    
    int i=0,a=0,c=0;
    float max,min=9999999,media=0;
    char stop[]="Stop\n";
    
    
    void stampa();
    
    int main(){
    	printf("\n\t\t\t\t\tBenvenuto!\n\n");
    	printf("Questo programma calcola il voto massimo, minimo e medio di un certo numero di studenti");
    	printf("\nPer fermare il programma digitare 'Stop' alla richiesta del nome");
    	do{
    		printf("\nInserire NOME e COGNOME dello studente: ");
    		fgets(studente[i].nome, BUFFER_LENGTH, stdin);
    		while(getchar() != '\n');
    		if(strcmp (stop,studente[i].nome) == 0){
    			stampa();
    			return 0;
    		}
    		printf("Inserisci voto: ");
    		scanf("%.2f", &(studente[i]).voto);
    		if(studente[i].voto > max) {
                max = studente[i].voto;
                }
            if(studente[i].voto < min){
                min = studente[i].voto;
                }
            i++;
            media=media+studente[i].voto;
            c++;
        	}while(a==0);
    
    }
    
    
    
    void stampa(){
    	
    	for(int b=0; b<i; b++){
    		printf("\nNome studente: %s Voto: %.2f",studente[b].nome,studente[b].voto);
    		printf("Voto massimo: %.2f", max);
    		printf("Voto minimo: %.2f", min);
    		media=media/c;
    		printf("Voto medio: %.2f", media);
    		break;
    	}
    	
    }
    Non riesco a capire cosa devo aggiungere e dove devo aggiungerlo? Ho aggiunto il /n allo Stop ma non sembra andare
  • Re: Problema in C, programma voto

    Non ho scritto /n
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Non ho scritto /n
    scritto male qui nel forum, ma nel codice l'ho scritto come hai detto te
  • Re: Problema in C, programma voto

    Cioè ? Puoi mostrare nuovamente tutto il codice modificato?
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Cioè ? Puoi mostrare nuovamente tutto il codice modificato?
    #include <stdio.h>
    #include <string.h>
    #define BUFFER_LENGTH 255
    
    struct studenti{
       char nome[BUFFER_LENGTH];
       float voto;
    };
    
    struct studenti studente[100];
    
    int i=0,a=0,c=0;
    float max,min=9999999,media=0;
    char stop[]="Stop"; //sicuro è sbagliato, ma non sapevo come scriverlo//
    
    
    void stampa();
    
    int main(){
       printf("\n\t\t\t\t\tBenvenuto!\n\n");
       printf("Questo programma calcola il voto massimo, minimo e medio di un certo numero di studenti");
       printf("\nPer fermare il programma digitare 'Stop' alla richiesta del nome");
       do{
          printf("\nInserire NOME e COGNOME dello studente: ");
          fgets(studente[i].nome, BUFFER_LENGTH, stdin);
          while(getchar() != '\n');
          if(strcmp (stop,studente[i].nome) == 0){
             stampa();
             return 0;
          }
          printf("Inserisci voto: ");
          scanf("%.2f", &(studente[i]).voto);
          if(studente[i].voto > max) {
                max = studente[i].voto;
                }
            if(studente[i].voto < min){
                min = studente[i].voto;
                }
            i++;
            media=media+studente[i].voto;
            c++;
           }while(a==0);
    
    }
    
    
    
    void stampa(){
       
       for(int b=0; b<i; b++){
          printf("\nNome studente: %s Voto: %.2f",studente[b].nome,studente[b].voto);
          printf("Voto massimo: %.2f", max);
          printf("Voto minimo: %.2f", min);
          media=media/c;
          printf("Voto medio: %.2f", media);
          break;
       }
       
    }
  • Re: Problema in C, programma voto

    Il \n è corretto. E' la while che ti avevo detto di mettere dopo la scanf ma tu l'hai messa dopo la fgets
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Il \n è corretto. E' la while che ti avevo detto di mettere dopo la scanf ma tu l'hai messa dopo la fgets
    Si ma il problema è che se io scrivo Stop, non mi va --->https://i.gyazo.com/5cb021f317a9baa5d3cf10645e36ec66.png
  • Re: Problema in C, programma voto

    A me va bene. Ma vedo adesso che nel codice hai scritto così

    char stop[]="Stop"; //sicuro è sbagliato, ma non sapevo come scriverlo//

    Ma il \n dov'è ?
  • Re: Problema in C, programma voto

    oregon ha scritto:


    A me va bene. Ma vedo adesso che nel codice hai scritto così

    char stop[]="Stop"; //sicuro è sbagliato, ma non sapevo come scriverlo//

    Ma il \n dov'è ?
    va scritto così?
    #include <stdio.h>
    #include <string.h>
    #define BUFFER_LENGTH 255
    
    struct studenti{
       char nome[BUFFER_LENGTH];
       float voto;
    };
    
    struct studenti studente[100];
    
    int i=0,a=0,c=0;
    float max,min=9999999,media=0;
    char stop[]="Stop/n";
    
    
    void stampa();
    
    int main(){
       printf("\n\t\t\t\t\tBenvenuto!\n\n");
       printf("Questo programma calcola il voto massimo, minimo e medio di un certo numero di studenti");
       printf("\nPer fermare il programma digitare 'Stop' alla richiesta del nome");
       do{
          printf("\nInserire NOME e COGNOME dello studente: ");
          fgets(studente[i].nome, BUFFER_LENGTH, stdin);
          if(strcmp (stop,studente[i].nome) == 0){
             stampa();
             return 0;
          }
          printf("Inserisci voto: ");
          scanf("%.2f", &(studente[i]).voto);
          while(getchar() != '\n');
          if(studente[i].voto > max) {
                max = studente[i].voto;
                }
            if(studente[i].voto < min){
                min = studente[i].voto;
                }
            i++;
            media=media+studente[i].voto;
            c++;
           }while(a==0);
    
    }
    
    
    
    void stampa(){
       
       for(int b=0; b<i; b++){
          printf("\nNome studente: %s Voto: %.2f",studente[b].nome,studente[b].voto);
          printf("Voto massimo: %.2f", max);
          printf("Voto minimo: %.2f", min);
          media=media/c;
          printf("Voto medio: %.2f", media);
          break;
       }
       
    }
  • Re: Problema in C, programma voto

    Justin ... ma lo fai apposta?

    Non "Stop/n" ma "Stop\n"
  • Re: Problema in C, programma voto

    oregon ha scritto:


    Justin ... ma lo fai apposta?

    Non "Stop/n" ma "Stop\n"
    Ora va lo Stop, ma non la stampa, ho ricodificato il codice, ad occhio mi sembra giusto, ma non capisco perché non stampa tutti i nomi
    #include <stdio.h>
    #include <string.h>
    #define BUFFER_LENGTH 255
    
    struct studenti{
       char nome[BUFFER_LENGTH];
       float voto;
    };
    
    struct studenti studente[100];
    
    int i=0,a=0,c=0;
    float max,min=9999999,media=0;
    char stop[]="Stop\n"; 
    
    int main(){
       printf("\n\t\t\t\t\tBenvenuto!\n\n");
       printf("Questo programma calcola il voto massimo, minimo e medio di un certo numero di studenti");
       printf("\nPer fermare il programma digitare 'Stop' alla richiesta del nome");
       do{
          printf("\nInserire NOME e COGNOME dello studente: ");
          fgets(studente[i].nome, BUFFER_LENGTH, stdin);
          if(strcmp (studente[i].nome,stop) == 0){
             for(int b=0; b<i; b++){
          printf("\nNome studente: %s Voto: %.2f",studente[b].nome,studente[b].voto);
          printf("\nVoto massimo: %.2f", max);
          printf("\nVoto minimo: %.2f", min);
          media=media/c;
          printf("\nVoto medio: %.2f", media);
             return 0;
          }
      }
          printf("Inserisci voto: ");
          scanf("%.2f", &studente[i].voto);
          while(getchar() != '\n');
          if(studente[i].voto > max) {
                max = studente[i].voto;
                }
            if(studente[i].voto < min){
                min = studente[i].voto;
                }
            i++;
            media=media+studente[i].voto;
            c++;
           }while(a==0);
       }
    
    
    
    
Devi accedere o registrarti per scrivere nel forum
31 risposte