Buongiorno! Il programma mi chiede:
/*Sia dato un file di testo valutazione.txt contenente le valutazioni di siti web. Le informazioni sono così strutturate: ogni rigo contiene un URL seguito
da un numero di '*' (rappresentanti la media dei voti, da 1 a 5) seguiti da un intero (rappresentante il numero di voti). Scrivere una procedura che restituisca
l'URL con la valutazione migliore e, a parità di valutazione, quello con più voti.
es:
http://www.polimi.it **** 109<eol>
http://www.studenti.it **** 150<eol>
http://www.lombardia.it ** 93<eol>
http://www.google.com *** 64<eol>
http://www.victoria.org **** 118<eol><eof>
output: http://www.studenti.it Voto medio: 4, votanti: 150 */
Il Codice che ho elaborato è il seguente:
#include <stdio.h>
void procedura( FILE*, char[20], char[5], int );
int main ()
{
FILE *cfPtr;
char URL[20], valutazione[5];
int numero_voti;
if( (cfPtr = fopen("valutazione.txt", "r")) == NULL )
printf("errore");
while( !feof(cfPtr) ){
procedura(cfPtr, URL, valutazione, numero_voti);
}
fclose(cfPtr);
return 0;
}
void procedura( FILE *cfPtr, char URL[20], char valutazione[5], int numero_voti )
{
int i, count = 5, hold = 5;
fscanf(cfPtr, "%s %s %d", URL, valutazione, &numero_voti);
//printf("(URL:)%s (Valutazione:)%s (Numero voti:)%d\n", URL, valutazione, numero_voti);
for( i = 4; i >= 0; i-- ){
if( valutazione[i] != '*' ){
count--;
if( hold > count ){
hold = count;
printf("%s Voto medio: %d, votanti: %d\n", URL, hold, numero_voti);
}
}
}
}
Ora, se compio debugging per vedere se mi calcola bene le corrispondenti stelline in numeri (es. ** = 2 ***** = 5 ecc) mi funziona correttamente, ma non riesco a stampare la URL la cui valutazione è maggiore delle altre e - in caso di parità - quello con maggiore numero di voti (studenti.it). Come posso fare?