Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C]Miglior voto

    Ciao,
    devo fare un programma che dati in ingresso 10 voti di 10 studenti mi dica qual'è il voto più alto e il nome ed il cognome dello studente che lo ha fatto.
    Io riesco solo a determinare quale è il voto più alto ma, poi non so che cosa scrivere al fine di far apparire anche il nome ed il cognome dello studente che lo ha ottenuto.
    Qualcuno di voi mi potrebbe gentilmente spiegare come posso risolvere questo problema.
    Ciao e grazie.
    codice:
    //Miglior voto delgi alunni
    #include<stdio.h>
    int  main()
    {
         float voti , votimax;
         char *nome[10], *cognome[10];
         int i;
         for(i=0;i<10;i++)
        {
                        printf("\nInsersci il voto numero %d: ", i+1);
                        scanf("%f", &voti);
                        printf("\nInsersci il nome dello studente: ");
                        scanf("%s", &nome[i]);
                        printf("\nInsersci il cognome dello studente: ");
                        scanf("%s", &cognome[i]);
                        if(i==1)
                        votimax=voti;
                        else
                        {
                        if(voti>votimax)
                        votimax=voti;
                        } 
        }
        system ("pause");
        return 0;
    }
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    salva l'indice del voto piu` alto, poi stampa i record di quell'indice

    codice:
    printf("%s %s %d", nome[ind], cognome[ind], votimax);

  3. #3
    Scusami,
    mi potresti spiegare come posso fare a salvare l'indice che non so farlo?
    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Devi memorizzare l'indice del nome/cognome...

  5. #5

    Re: [C]Miglior voto

    codice:
    //Miglior voto degli alunni
    #include<stdio.h>
    int  main()
    {
         char *nome[10], *cognome[10];
         int indiceVotoMax;
         float voto, votoMax;
         int i;
         for(i=0;i<10;i++)
        {
                        printf("\nInsersci il voto numero %d: ", i+1);
                        scanf("%f", &voto);
                        printf("\nInsersci il nome dello studente: ");
                        scanf("%s", &nome[i]);
                        printf("\nInsersci il cognome dello studente: ");
                        scanf("%s", &cognome[i]);
    
                        if (i==0) // Primo voto: automaticamente è il maggiore
                        {
                            indiceVotoMax = 0;
                            votoMax = voto;
                        }
                        else
                        {
                            if(voto>votoMax){
                                votoMax=voto;
                                indiceVotoMax = i;
                             }
                         } 
        }
        // Studente selezionato: nome[i] cognome[i] votoMax
        system ("pause");
        return 0;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Occhio, che questi

    char *nome[10], *cognome[10];

    sono vettori di puntatori a caratteri ...

    E poi lo studente selezionato è

    Studente selezionato: nome[indiceVotoMax] cognome[indiceVotoMax] votoMax
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    @CyberCrasher: se gli dai il codice da copiare in questo modo, non si risolve nulla.

  8. #8
    Caio,
    ho cercato di seguire i vostri consigli ed ho scritto questo codice:
    codice:
    //Miglior voto degli alunni
    #include<stdio.h>
    #include <string.h> //Serve per far funzionare lo strcpy
    int  main()
    {
        char nome[15], cognome[15];
        char mnome[15], mcognome[15]; //mnome e mcognome indicano rispettivamente il nome ed il cognome del miglioor studente
        float voto, votoMax;
        int i, k; //K serve come indice del voto massimo
        for(i=0;i<10;i++)
        {
                        printf("\nInsersci il %d %c voto: ", i+1, 167);
                        scanf("%f", &voto);
                        printf("\nInsersci il nome dello studente: ");
                        scanf("%s", &nome[i]);
                        printf("\nInsersci il cognome dello studente: ");
                        scanf("%s", &cognome[i]);
    
                        if (i==0) // Primo voto: automaticamente è il maggiore
                        {
                            k=0;
                            votoMax = voto;
                            strcpy(mnome[k], nome[i]);
                        }
                        else
                        {
                            if(voto>votoMax)
                            {
                                votoMax=voto;
                                k=i;
                                strcpy(mnome[k], nome[i]);
                                strcpy(mcognome[k], cognome[i]);
                             }
                         } 
        }
        printf("Il miglior voto appartiene allo studente %s %s che ha ottenuto un voto di %f decimi", mnome[k], cognome[k], votoMax); 
        system ("pause");
        return 0;
    }
    Solo che quando lo eseguo mi si chiude quando cerco di inserire il voto del secondo studente e il compilatore mi dice che ci sono degli errori nello strcpy ma, io non riesco a capire quali sono.

    Qualcuno mi otrebbe gentilmente spiegare cosa ho sbagliato e come sistemarlo?

    Ciao e grazie in anticipo
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  9. #9
    strcpy(mnome[k], nome[i]);
    strcpy richiede due puntatori a char, passando mnome[k] e nome[i] passi soltanto 2 caratteri.

  10. #10
    Scusatemi,
    quindi per farlo diventare un puntatore devo mettere * prima di mnome, nome, mcognome e cognome?

    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.