Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme tableau aléatoire

    15 août 2017 à 10:42:49

    Bonjour , voila j'ai commencé a bosser le cours de C et je me retrouve dans un petit problème avec les tableau aléatoire . Enfin tout marche mais je ne comprend pas comment arriver a une amelioration de mon code . Je m'explique , j'ai créé un tableau 25 sur 25 remplis de nombre aléatoire , j'ai fait en sorte de compter le nombre de nombre pair et impair . Cependant , j aimerais placer ces nombres pairs et impairs dans un autre tableau pour les présenter . Une idée ? 

    Voici le code actuelle ( je chipotte encore dedans ) :

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    #include <math.h>

    int main()

    {

        int tableau [25][25];

        srand (time( NULL ));

        int i=0 ,j=0 ;

        int z=0;

        int k=0,sommepair=0,sommetot=0,sommeImpair=0;

        for (i=0 ; i<25 ;i++)

        {

            for (j=0 ;j<25 ;j++)

            {

                int k=0;

                k=rand() %1000;

                tableau [i][j]= k+1 ;

            }

        }

       for (i=0 ; i<25 ;i++)

       {

          for (j=0 ;j<25 ;j++)

         {

            printf("%d\t" , tableau[i][j]);

        }

        printf("\n");

    }

        for (i=0 ; i<25 ;i++)

        {

            for (j=0 ;j<25 ;j++)

            {

                sommetot= sommetot + tableau[i][j];

                if (tableau[i][j]%2 == 0)

                {

                    sommepair = sommepair + tableau[i][j];

                tableau [i][j] = 1;

                z++;

                }

                else

                {

                    sommeImpair=sommeImpair + tableau [i][j];

                    tableau [i][j]=0;

                    k++;

                   }

                }

            }

        }

        for (i=0 ; i<25 ;i++)

        {

            for (j=0 ;j<25 ;j++)

            {

                printf("%d\t" , tableau[i][j]);

            }

            printf("\n");

        }

     printf("il y a %d nombre pair\n",z);

     printf("il y a %d nombre impair\n",k);

     printf("lasomme totale des nombre du tableau est de %d\n", sommetot);

    printf("la somme des nombre pair est de %d\n", sommepair);

    printf("la somme des nombre impair est de %d\n", sommeImpair);

    printf("%d",sommepair+sommeImpair);

        return 0;

    }

    Merci d'avance pour quelconque aide !

    -
    Edité par LoicHonorez 15 août 2017 à 10:44:07

    • Partager sur Facebook
    • Partager sur Twitter
      15 août 2017 à 17:06:08

      Salut,

      Pour commencer utilise la balise </> pour écrire du code c'est plus propre et surtout fait pour ;) et en gros tu voudrais avoir :

      Etape 1 : Un tableau de 25 par 25 remplie de nombre aléatoire.

      Etape 2 : Compter la somme totale des nombres, Compter le nombre de chiffre paires, Compter le nombre de chiffre impaires

      Etape 3 : Placer les nombres Paires dans un nouveau tableau puis afficher ce tableau, Placer les nombres impaires dans un nouveau tableau puis afficher ce tableau ?

      Alors pour commencer je trouve que tu fais beaucoup de boucle pourquoi pas obti tout ça en une boucle de parcoure pour ton tableau en gros étape 1 et 2 en 1 seul étape ?

      Je ta laisse réfléchir la dessus et ensuite Pour la 3ème étape tu as plusieurs possibilités Tableaux Dynamiques (Réallocation), Liste Chainée ou tout simplement (Pas très propre) créer des le début deux tableaux de 25 par 25 et stocker dans 1 si il est pair et dans l'autre si il est impaire !! 

      Je suis pas sur d'avoir compris ce que tu veux hésite pas à donner plus de détails ! Good Luck

      • Partager sur Facebook
      • Partager sur Twitter
      Quand tu regardes l'abîme, l'abîme regarde aussi en toi.
        15 août 2017 à 23:56:54

        #include <stdlib.h>
        #include <time.h>
        #include <stdio.h>
        
        static void disp_tab(int **tab, int lg)
        {
            int     i;
            int     j;
        
            i = 0;
            j = 0;
            while (i < lg)
            {
                j = 0;
                while (j < lg)
                {
                    if (j + 1 < lg)
                        printf("%d|", tab[i][j]);
                    else
                        printf("%d", tab[i][j]);
                    j += 1;
                }
                printf("\n");
                i += 1;
            }
        }
        
        static int  **create_tab(int lg)
        {
            int     i;
            int     j;
            int     **tab;
        
            srand(time(NULL));
            if (!(tab = malloc(sizeof(int *) * lg)))
                return (NULL);
            i = 0;
            while (i < lg)
            {
                if (!(tab[i] = malloc(sizeof(int) * lg)))
                    return (NULL);
                j = 0;
                while (j < lg)
                {
                    tab[i][j] = rand() % 1000;
                    j += 1;
                }
                i += 1;
            }
            return (tab);
        }
        
        static int  count_pair(int **tab, int lg)
        {
            int     i;
            int     j;
            int     nbP;
        
            nbP = 0;
            i = 0;
            while (i < lg)
            {
                j = 0;
                while (j < lg)
                {
                    if (tab[i][j] % 2 == 0)
                        nbP += 1;
                    j += 1;
                }
                i += 1;
            }
            return (nbP);
        }
        
        static int  count_odd(int **tab, int lg)
        {
            int     i;
            int     j;
            int     nbI;
        
            nbI = 0;
            i = 0;
            while (i < lg)
            {
                j = 0;
                while (j < lg)
                {
                    if (tab[i][j] % 2 != 0)
                        nbI += 1;
                    j += 1;
                }
                i += 1;
            }
            return (nbI);
        }
        
        static void disp_list(int *list, int lg)
        {
            int     i;
        
            i = 0;
            while (i < lg)
            {
                if (i + 1 < lg)
                    printf("%d | ", list[i]);
                else
                    printf("%d\n", list[i]);
                i += 1;
            }
        }
        
        static void swap(int *a, int *b)
        {
            int     temp;
        
            temp = *a;
            *a = *b;
            *b = temp;
        }
        
        static void ord_list(int *list, int lg)
        {
            int     i;
        
            i = 0;
            while (i + 1 < lg)
            {
                if (list[i] > list[i + 1])
                {
                    swap(&list[i], &list[i + 1]);
                    i = -1;
                }
                i += 1;
            }
        }
        
        static int  *fill_list(int **tab, int lgTab, int status, int *list, int lgList)
        {
            int     i;
            int     j;
            int     k;
        
            i = 0;
            k = 0;
            while (i < lgTab)
            {
                j = 0;
                while (j < lgTab)
                {
                    if (tab[i][j] % 2 == status)
                        {
                            list[k] = tab[i][j];
                            k += 1;
                        }
                    j += 1;
                }
                i += 1;
            }
            return (list);
        }
        
        static int  *create_list(int **tab, int lgTab, int status)
        {
            int     i;
            int     lg;
            int     *list;
        
            i = 0;
            if (status == 0)
                lg = count_pair(tab, lgTab);
            else
                lg = count_odd(tab, lgTab);
            list = NULL;
            if (!(list = malloc(sizeof(int) * lg)))
                return (NULL);
            list = fill_list(tab, lgTab, status, list, lg);
            ord_list(list, lg); // order list (classe les tableaux d'int)
            return (list);
        }
        
        static void free_tabs(int **tab, int lg, int *listPair, int *listOdd)
        {
            int     i;
        
            i = 0;
            while (i < lg)
            {
                if (tab[i])
                    free(tab[i]);
                i += 1;
            }
            if (listPair)
                free(listPair);
            if (listOdd)
                free(listOdd);
        }
        
        int     main(void)
        {
            int lgTab;
            int **tab;
            int *listPair;
            int *listOdd;
        
            lgTab = 5;
            tab = NULL;
            if (!(tab = create_tab(lgTab)) ||
                !(listPair = create_list(tab, lgTab, 0)) || // zero for Pair
                !(listOdd = create_list(tab, lgTab, 1))) // one for Odd (impair)
                return (84);
            disp_tab(tab, lgTab);
            printf("Il y a %d nombre(s) pair(s) et %d nombre(s) impair(s)\n", count_pair(tab, lgTab), count_odd(tab, lgTab));
            printf("Pair : ");
            disp_list(listPair, count_pair(tab, lgTab));
            printf("Odd : ");
            disp_list(listOdd, count_odd(tab, lgTab));
            free_tabs(tab, lgTab, listPair, listOdd);
            return (0);
        }
        
        • Partager sur Facebook
        • Partager sur Twitter

        Probleme tableau aléatoire

        × 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