PDA

Visualizza la versione completa : Programma in C aiuto urgente...


Darkstar
10-04-2008, 16:17
Ragazzi per chi sa qualche cosa ed arriva a darmiuna mano....

Si consideri un file che contiene una sequenza di cognomi di candidati seguiti da un intero K, tale che ogni elemento rappresenta k voti espressi a favore di quel candidato. Come esempio si consideri il seguente file

Rossi 6
Verdi 4
Bianchi 4
Rossi 4
Bianchi 1
Rossi 11
De_Rossi 21
Rossi 11
Verdi 12
Verdi 7

Si assuma che il numero di voti sia qualsiasi ma il numero di candidati votati sia al massimo 100.
Si scriva una funzione C che riceve come parametro un file siffatto e restituisca attraverso un ulteriore parametro il cognome del candidato che ha ricevuto più voti totali. La funzione deve in oltre restituire il numero di voti presi dal candidato suddetto.
Si assuma che tutti i candidati assumano un unmero diverso di voti e che quindi non si verifichino situazioni di parità.
Nell esempio, la funzione deve restituire ceme candidato Rossi e come valore 32.

Che arriva mi aiuti entro domani... GRAZIE :-))

lookdown80
10-04-2008, 17:48
Ah, belli i tempi dell'università... mi dispiace, l'unico esame di ingegneria che ho dato è stato quello di chimica. ;-)

Comunque la sequenza logica è questa, ti crei una matrice con massimo 100 voci, poi per ogni nome ti chiedi: è già in lista?
1) sì, sommo al totale precedente
2) no, creo una nuova voce dell'array
e scorri la lista, poi basta che ordini per il campo voti... in bocca al lupo.

Marco

fa69
10-04-2008, 18:06
Un file excel ?

Homerct
10-04-2008, 18:26
Ah, belli i tempi dell'università... mi dispiace, l'unico esame di ingegneria che ho dato è stato quello di chimica. ;-)

Comunque la sequenza logica è questa, ti crei una matrice con massimo 100 voci, poi per ogni nome ti chiedi: è già in lista?
1) sì, sommo al totale precedente
2) no, creo una nuova voce dell'array
e scorri la lista, poi basta che ordini per il campo voti... in bocca al lupo.

Marco

Esatto!
Dando per scontato che sai aprire il file,usare i boleani e usare le formattazioni, procedi:
- definendo due vettori uno char e uno integer (ai quali a pari indice corrisponde rispettivamente cognome e totale voti);
- una variabile char Cognome e una integer Voto;
- con un ciclo di 100 iterazioni leggi i dati dal file riga per riga memorizzando il dato in Cognome e Voto;
- all'interno dello stesso ciclo ne crei un'altro che confronta i valori letti con quelli del vettore (cioè un'altro ciclo annidato di 100 iterazioni): se il cognome non esiste lo crea e associa il voto letto nel file, se il cognome è già presente nella lista, somma il voto letto al totale contenuto nel rispettivo vettore dei voti!);

-con un'ultimo cliclo di 100 iterazioni, sfogli il vettore dei voti alla ricerca del valore max, ottenendo l'indice "i" e fai restituire alla funzione l'elemento iesimo del vettore cognome e del vettore voti.

la spiegazione è un pò incasinata, ma non è molto difficile. #36#

Darkstar
11-04-2008, 14:10
Ragazzi fatto l'orale abbiamo discusso del compito... #12

Ho sbagliato una cosa perchè ho fatto due cicli for ma non ho creato la stringa per i nomi, ma dovevo usare anche una funzione la stringcompare strcmp che vedeva se i nomi erano gia stati inseriti... :-( :-( -04 #07 #13 -28d# -20 #23

Homerct
11-04-2008, 20:02
- all'interno dello stesso ciclo ne crei un'altro che confronta i valori letti con quelli del vettore (cioè un'altro ciclo annidato di 100 iterazioni): se il cognome non esiste lo crea e associa il voto letto nel file, se il cognome è già presente nella lista, somma il voto letto al totale contenuto nel rispettivo vettore dei voti!);


Io l'ho scritto :-))

Ma non ho capito una cosa... lo scritto lo hai fatto a casa?

Darkstar
12-04-2008, 11:21
Lo scritto lo fai in aula poi a casa ti prepari il prog funzionante da portare all'orale... ma all'orale non ha neanche guardato il prog -04 -04 e ci ho prso un pome a farlo con tanti cicli che controllano errori ecc... -04 #07