Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de tri de plusieurs tableau

    8 février 2019 à 10:25:55

    Bonjour à toutes et à tous,

    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;
    				}
    				
    			}
    		}


    Merci par avance pour vos réponses,

    Bonne journée à tous

    • Partager sur Facebook
    • Partager sur Twitter
      8 février 2019 à 15:31:02

      Hello,

      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.

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        11 février 2019 à 9:04:41

        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
        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown