PDA

Visualizza la versione completa : [C] Esercizio: individuazione del voto pių alto e stampa del nome dello studente


21Edoardo96
28-09-2012, 17:05
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.


//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;
}

clynamen
28-09-2012, 17:39
salva l'indice del voto piu` alto, poi stampa i record di quell'indice


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

21Edoardo96
28-09-2012, 17:44
Scusami,
mi potresti spiegare come posso fare a salvare l'indice che non so farlo?
Ciao e grazie

Patrick Jane
28-09-2012, 17:57
Devi memorizzare l'indice del nome/cognome...

CyberCrasher
28-09-2012, 18:47
//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;
}

oregon
28-09-2012, 18:51
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

Patrick Jane
01-10-2012, 13:32
@CyberCrasher: se gli dai il codice da copiare in questo modo, non si risolve nulla.

21Edoardo96
01-10-2012, 19:42
Caio,
ho cercato di seguire i vostri consigli ed ho scritto questo 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

clynamen
01-10-2012, 20:44
strcpy(mnome[k], nome[i]);
strcpy richiede due puntatori a char, passando mnome[k] e nome[i] passi soltanto 2 caratteri.

21Edoardo96
01-10-2012, 20:51
Scusatemi,
quindi per farlo diventare un puntatore devo mettere * prima di mnome, nome, mcognome e cognome?

Ciao e grazie

Loading