Giupoz
26-01-2014, 18:53
Ehi ragazzi, ho questo codice che, premetto, è funzionante.
In pratica in un gioco devo leggere dal file record.txt i nomi dei giocatori che hanno vinto e il numero di mosse impiegato per vincere.
Nel file i dati appaiono così
CARLO 20
GIONN 13 ecc...
Nel prendere i dati dal file funziona, e anche nello stamparli.
Però se in contemporanea volessi stilare una classifica in ordine decrescente dei giocatori che hanno impiegato il minor numero di mosse per vincere, il codice si blocca. Come devo risolvere????
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf ("\n\t\t *** RECORD ***\n\n\n");
printf ("%21s%21s","PLAYER", "TURNI\n\n");
char name [7]; int i = 0; int k = 0;
int mosse;
int primo, secondo, terzo;
char first [7], second [7], third [7];
primo = 50; secondo = 50; terzo = 50;
FILE *cfPtr;
if ((cfPtr = fopen ("record.txt", "r")) == NULL)
{
puts ("File could not be opened");
}
while (!feof (cfPtr))
{
fscanf (cfPtr, "%6s%d", name, &mosse);
printf ("%d - %17s %19d\n", i++, name, mosse);
if (mosse < primo)
{ primo = mosse;
k = 0;
while (k < 7)
{
third [i] = second [i];
second [i] = first [i];
first [i] = name [i];
i++;
}
}
else if ( (mosse > primo) && (mosse < secondo) )
{ secondo = mosse;
k = 0;
while (k < 7)
{
third [i] = second [i];
second [i] = name [i];
i++;
}
}
else if ( (mosse > secondo) && (mosse < terzo) )
{ terzo = mosse;
k = 0;
while (k < 7)
{
third [i] = name [i];
i++;
}
}
}
system ("pause");
}
In pratica in un gioco devo leggere dal file record.txt i nomi dei giocatori che hanno vinto e il numero di mosse impiegato per vincere.
Nel file i dati appaiono così
CARLO 20
GIONN 13 ecc...
Nel prendere i dati dal file funziona, e anche nello stamparli.
Però se in contemporanea volessi stilare una classifica in ordine decrescente dei giocatori che hanno impiegato il minor numero di mosse per vincere, il codice si blocca. Come devo risolvere????
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf ("\n\t\t *** RECORD ***\n\n\n");
printf ("%21s%21s","PLAYER", "TURNI\n\n");
char name [7]; int i = 0; int k = 0;
int mosse;
int primo, secondo, terzo;
char first [7], second [7], third [7];
primo = 50; secondo = 50; terzo = 50;
FILE *cfPtr;
if ((cfPtr = fopen ("record.txt", "r")) == NULL)
{
puts ("File could not be opened");
}
while (!feof (cfPtr))
{
fscanf (cfPtr, "%6s%d", name, &mosse);
printf ("%d - %17s %19d\n", i++, name, mosse);
if (mosse < primo)
{ primo = mosse;
k = 0;
while (k < 7)
{
third [i] = second [i];
second [i] = first [i];
first [i] = name [i];
i++;
}
}
else if ( (mosse > primo) && (mosse < secondo) )
{ secondo = mosse;
k = 0;
while (k < 7)
{
third [i] = second [i];
second [i] = name [i];
i++;
}
}
else if ( (mosse > secondo) && (mosse < terzo) )
{ terzo = mosse;
k = 0;
while (k < 7)
{
third [i] = name [i];
i++;
}
}
}
system ("pause");
}