yoyo269
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
2
24 nov. 2006 à 17:30
Alors en fait j'aurais pas le temps de te finir la mise à l'échelle et en plus ce week-end je ne suis pas là.
Voilà donc ce que j'ai fait pour l'instant :
Fonctions à remplacer entièrement :/*Récupération des données du fichier*/
void RecupDonnees(char* NomFichier)
{
char Texte[TAILLEBUFFER + ZERO_FIN];
FILE * Fich;
int i=0, j=0, Sec;
Fich = fopen(NomFichier, "r");
if(!Fich) MessageBox(NULL, "Impossible d'ouvrir le fichier !", "Erreur", MB_ICONSTOP);
while(fgets(Texte, TAILLEBUFFER, Fich))
{
NbCourbes = 0;
i = 0;
while(Texte[i] != '.') i++;
Sec = atoi(Left(Texte, i)); // Récupération de la seconde (abscisse) pour les données
while(Texte[i] != ' ') i++;
j = i + 1;
while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++; if(Sec 0) Min Max = DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j));
else if((DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[0][Sec];
else if(DonneesCourbes[0][Sec] < Min) Min = DonneesCourbes[0][Sec];
NbCourbes++;
i = j + 1;
while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
if((DonneesCourbes[1][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[1][Sec];
else if(DonneesCourbes[1][Sec] < Min) Min = DonneesCourbes[1][Sec];
NbCourbes++;
if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
j = i + 1;
while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
if((DonneesCourbes[2][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[2][Sec];
else if(DonneesCourbes[2][Sec] < Min) Min = DonneesCourbes[2][Sec];
NbCourbes++;
if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
i = j + 1;
while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
if((DonneesCourbes[3][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[3][Sec];
else if(DonneesCourbes[3][Sec] < Min) Min = DonneesCourbes[3][Sec];
NbCourbes++;
if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
j = i + 1;
while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
if((DonneesCourbes[4][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[4][Sec];
else if(DonneesCourbes[4][Sec] < Min) Min = DonneesCourbes[4][Sec];
NbCourbes++;
if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
i = j + 1;
while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
if((DonneesCourbes[5][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[5][Sec];
else if(DonneesCourbes[5][Sec] < Min) Min = DonneesCourbes[5][Sec];
NbCourbes++;
if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
j = i + 1;
while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
if((DonneesCourbes[6][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[6][Sec];
else if(DonneesCourbes[6][Sec] < Min) Min = DonneesCourbes[6][Sec];
NbCourbes++;
if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
i = j + 1;
while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
if((DonneesCourbes[7][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[7][Sec];
else if(DonneesCourbes[7][Sec] < Min) Min = DonneesCourbes[7][Sec];
NbCourbes++;
if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
j = i + 1;
while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
if((DonneesCourbes[8][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[8][Sec];
else if(DonneesCourbes[8][Sec] < Min) Min = DonneesCourbes[8][Sec];
NbCourbes++;
if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
FinBoucle:
;
}
fclose(Fich);
AbscisseMax = Sec;
}/*Tracé du(des) graphes*/
void TracerGraphes()
{
double DeltaMax = Max - Min;
for(int j=0;j<NbCourbes;j++)
{ if(j 0) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 0)); if(j 1) hPen CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); if(j 2) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 0)); if(j 3) hPen CreatePen(PS_SOLID, 1, RGB(0, 255, 0)); if(j 4) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 128)); if(j 5) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); if(j 6) hPen CreatePen(PS_SOLID, 1, RGB(128, 128, 0)); if(j 7) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 128)); if(j 8) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 128));
SelectObject(hdcImage, hPen);
for(int i=0;i<=AbscisseMax;i++)
{
if(i) LineTo(hdcImage, (i * 700) / AbscisseMax + 10, (int)(DonneesCourbes[j][i] * 480 / Max));
else MoveToEx(hdcImage, 10, (int)(DonneesCourbes[j][i] * 480 / Max), NULL);
}
DeleteObject(hPen);
}
}
Variables à déclarer en global :
int AbscisseMax, NbCourbes;
double DonneesCourbes[8][1000], Min, Max;
Je te laisse tester et me dire ce que tu en penses.
PS: pour le format du fichier texte, j'ai supposé qu'il n'y avait qu'un espace entre deux valeurs et qu'en fin de ligne il n'y avait pas d'espace.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"