Je suis un cours en C depuis quelques temps, j'avance doucement mais surement. J'ai donc decidé de faire un programme qui regroupe un peu tout ce que j'ai appris, afin de verifier mes compétences acquises. Mon programme consiste à faire un espece de classement des 3 demi finales d'un 100m, de classer tout d'abord par ordre croissant chaque temps, de chaque demi finale. Une fois cela fait, je me base sur ce qui se passe réélement en athletisme. Les 2 premiers de chaque demi finale sont qualifiés pour la finale. Et ils restent 3 places de libres, qui seront les 3 meilleurs temps de toutes les demi finales réunis. Je ne sais pas trop si je suis clair. Les temps d'arrivées de chaque demi-finale, c'est moi qui les définit et qui les stockent dans un tableau, un tableau pour chaque demi finale. J'arrive a classer par ordre croissant chaque demi finale, mais pour arriver à determiner les 3 qui seront aussi qualifié grace a leur temps je rencontre des problemes. JE vous joint mon code en esperant avoir été clair. D'abord la partie qui marche et qui classe chaque demi finales
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
#define MAX_SIZE 1000 // Tableau de taille 1000
#define STRING_SIZE 9
#define WR 9.58
void ordonner_semi_final1(double semi_final1[], int tailleTableau);
void ordonner_semi_final2(double semi_final2[], int tailleTableau);
void ordonner_semi_final3(double semi_final3[], int tailleTableau);
int main(int argc, char *argv[])
{
double semi_final1[9] = { 10.23, 10.46, 10.31, 9.96, 9.94, 10.02, 10.87, 10.11, 10.08 };
double semi_final2[9] = { 10.56, 10.19, 10.06, 9.85, 9.94, 10.45, 9.68, 10.16, 10.04 };
double semi_final3[9] = { 10.17, 10.58, 10.78, 9.97, 9.92, 10.05, 10.14, 10.09, 12.04 };
double time = { 0 };
int i = 0;
int j = 0;
int k = 0;
int z = 0;
int way = 0;
int semi_finalist = 0;
int choix = 0;
printf("****** Resultat de la premiere demi-finale ******\n\n");
for (i = 0; i < 9; i++)
{
way++;
printf("Couloir %d : ", way);
printf("%.2lf\t\t", semi_final1[i]);
ordonner_semi_final1(semi_final1, 8);
semi_finalist++;
printf("%d : %.2lf\t", semi_finalist, semi_final1[i]);
if (i < 2)
{
printf("Q\t");
if (semi_final1[i] < WR)
{
printf("New WR");
}
printf("\n");
}
else
{
printf("Waiting for others semi_final time...\n");
}
}
printf("\n\n****** Resultat de la deuxieme demi-finale ******\n\n");
way = 0;
semi_finalist = 0;
for (j = 0; j < 9; j++)
{
way++;
printf("Couloir %d : ", way);
printf("%.2lf\t\t", semi_final2[j]);
ordonner_semi_final2(semi_final2, 8);
semi_finalist++;
printf("%d : %.2lf\t", semi_finalist, semi_final2[j]);
if (j < 2)
{
printf("Q\t");
if (semi_final2[j] < WR)
{
printf("New WR");
}
printf("\n");
}
else
{
printf("Waiting for others semi_final time...\n");
}
}
printf("\n\n****** Resultat de la troisieme demi-finale ******\n\n");
way = 0;
semi_finalist = 0;
for (k = 0; k < 9; k++)
{
way++;
printf("Couloir %d : ", way);
printf("%.2lf\t\t", semi_final3[k]);
ordonner_semi_final3(semi_final3, 8);
semi_finalist++;
printf("%d : %.2lf\t", semi_finalist, semi_final3[k]);
if (k < 2)
{
printf("Q\t");
if (semi_final3[k] < WR)
{
printf("New WR");
}
printf("\n");
}
else
{
printf("\n");
}
}
void ordonner_semi_final1(double semi_final1[], int tailleTableau)
{
int i, j;
double temps;
for (j = 0; j < tailleTableau; j++)
{
for (i = 0; i < tailleTableau; i++)
{
if (semi_final1[i] > semi_final1[i + 1])
{
temps = semi_final1[i];
semi_final1[i] = semi_final1[i + 1];
semi_final1[i + 1] = temps;
}
}
}
}
void ordonner_semi_final2(double semi_final2[], int tailleTableau)
{
int i, j;
double temps;
for (j = 0; j < tailleTableau; j++)
{
for (i = 0; i < tailleTableau; i++)
{
if (semi_final2[i] > semi_final2[i + 1])
{
temps = semi_final2[i];
semi_final2[i] = semi_final2[i + 1];
semi_final2[i + 1] = temps;
}
}
}
}
void ordonner_semi_final3(double semi_final3[], int tailleTableau)
{
int i, j;
double temps;
for (j = 0; j < tailleTableau; j++)
{
for (i = 0; i < tailleTableau; i++)
{
if (semi_final3[i] > semi_final3[i + 1])
{
temps = semi_final3[i];
semi_final3[i] = semi_final3[i + 1];
semi_final3[i + 1] = temps;
}
}
}
}
Et la fonction que j'ai essayé de faire mais qui ne marche pas
void BestTimeQualification(double semi_final1[], double semi_final2[], double semi_final3[], double time[], int tailleTableau);
void BestTimeQualification(double semi_final1[], double semi_final2[], double semi_final3[],double *time[], int tailleTableau)
{
int i, j;
double temps;
for (j = 0; j < tailleTableau; j++)
{
for (i = 0; i < tailleTableau; i++)
{
if (semi_final1[i] > semi_final2[i + 1])
{
temps = *time[i];
*time[i] = *time[i + 1];
*time[i + 1] = temps;
}
if (semi_final1[i] > semi_final3[i + 1])
{
temps = *time[i];
*time[i] = *time[i + 1];
*time[i + 1] = temps;
}
if (semi_final2[i] > semi_final3[i + 1])
{
temps = *time[i];
*time[i] = *time[i + 1];
*time[i + 1] = temps;
}
}
}
Il me semble que tu n'as pas saisi le principe des fontions: pourquoi écrire trois fonctions qui font exactement la même chose (ordonner_semi_final1(), ordonner_semi_final2()et ordonner_semi_final3() ) ??
Tu écris une fonction, ordonner_semi_finale(double semi_finale[],int n) que tu appelles 3 fois en changeant les paramètres: ordonner_semi_finale(semi_final1,8), ordonner_semi_finale(semi_final2,8) et ordonner_semi_finale(semi_final3,8)
Il y a également du code redondant, mais comme tu n'as pas compris l'utilité des fonction, ça viendra plus tard.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
En effet j'etais persuader pouvoirle faire en une mais lors de mes essais cela ne marchait pas. J'ai préféré le faire en 3 fois, terminer mon programme et revenir dessus à la fin afin de le perfectionner. Je te remercie pour ta réponse mais pour l'instant, meme si elle est pas parfaite cette partie fonctionne. Mon probleme intervient plus loin comme expliquer au dessus
Probleme de tri de plusieurs tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent