IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Arranger un output dans des colonnes


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Arranger un output dans des colonnes
    bonjour,

    je voudrais arranger l'output d'un array dans 3 colonnes, question de lisibilite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    # include <stdio.h>
    # include <time.h>
    #include <stdlib.h>
    # define ROWS 9
    # define COLS 3
     
    void print_matrix(int [ ] [ COLS ] );
     
    int main ( void )
    {
            int i, j, t ;
            int array[25];
            srand(time ( NULL ));
            for (i=0; i<25; i++)
            {       array [i] = rand () %100;
            //      printf("array [%d] = %d\n", i, array[i]);
            }
     
              for(i = 1; i < 25; ++i)
                    for(j = 24; j >= i; --j)
                     {
                            if(array[ j - 1] > array[ j ])
                             {
                                    t = array[ j - 1];
                                    array[ j - 1] = array[ j ];
                                    array[ j ] = t;
                            }
                     }
     
              for(t=0; t<25; t++)
              {
                    printf("%i. array[%i] = %d \n", t+1, t, array[t]);
              }
    return 0;
    }

    l'output :

    1. array[0] = 11
    2. array[1] = 13
    3. array[2] = 15
    4. array[3] = 15
    5. array[4] = 15
    6. array[5] = 17
    7. array[6] = 21
    8. array[7] = 32
    9. array[8] = 35
    10. array[9] = 40
    11. array[10] = 41
    12. array[11] = 41
    13. array[12] = 50
    14. array[13] = 55
    15. array[14] = 55
    16. array[15] = 56
    17. array[16] = 57
    18. array[17] = 61
    19. array[18] = 67
    20. array[19] = 67
    21. array[20] = 68
    22. array[21] = 77
    23. array[22] = 78
    24. array[23] = 78
    25. array[24] = 99


    comment faire en sort que ca soit de cette maniere

    1. array[0] = 11____10. array[9] = 40_____18. array[17] = 61
    2. array[1] = 13____11. array[10] = 41____19. array[18] = 67
    3. array[2] = 15____12. array[11] = 41____20. array[19] = 67
    4. array[3] = 15____13. array[12] = 50____21. array[20] = 68
    5. array[4] = 15____14. array[13] = 55____22. array[21] = 77
    6. array[5] = 17____15. array[14] = 55____23. array[22] = 78
    7. array[6] = 21____16. array[15] = 56____24. array[23] = 78
    8. array[7] = 32____17. array[16] = 57____25. array[24] = 99
    9. array[8] = 35


    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    moi je ferais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    			# include <stdio.h>
    			# include <time.h>
    			#include <stdlib.h>
    			# define ROWS 9
    			# define COLS 3
     
    			void print_matrix(int [ ] [ COLS ] );
     
    			int main ( void )
    			{
    						  int i, j, t ;
    					  int array[25];
    					  srand(time ( NULL ));
    					  for (i=0; i<25; i++)
    					  {       array [i] = rand () %100;
    					  //      printf("array [%d] = %d\n", i, array[i]);
    					  }
     
    						 for(i = 1; i < 25; ++i)
    								 for(j = 24; j >= i; --j)
    								  {
    											if(array[ j - 1] > array[ j ])
    											 {
    													  t = array[ j - 1];
    													  array[ j - 1] = array[ j ];
    													  array[ j ] = t;
    											}
    								  }
     
    					for(i=0,t=0;i<ROWS-1;i++)
    					{				
    						for(j=0;j<COLS; j++)
    						{
    							printf("%i. array[%i] = %d    ", i+ROWS*j+1,i+ROWS*j, array[i+ROWS*j]);
    						}
    						printf("\n");
    					}
    					printf("%i. array[%i] = %d    ",ROWS,ROWS-1,array[ROWS-1]);
    			return 0;
    				}

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    merci pour votre reponse mais l'output est comme ca

    1. array[0] = 4
    10. array[9] = 43
    19. array[18] = 79

    2. array[1] = 6
    11. array[10] = 44
    20. array[19] = 81

    3. array[2] = 8
    12. array[11] = 51
    21. array[20] = 88

    4. array[3] = 11
    13. array[12] = 52
    22. array[21] = 88

    5. array[4] = 11
    14. array[13] = 57
    23. array[22] = 89

    6. array[5] = 24
    15. array[14] = 65
    24. array[23] = 91

    7. array[6] = 28
    16. array[15] = 67
    25. array[24] = 96

    8. array[7] = 30
    17. array[16] = 69
    26. array[25] = 66792

    9. array[8] = 38


  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # include <stdio.h>
    # include <time.h>
    #include <stdlib.h>
    # define ROWS 9
    # define COLS 3
     
    void print_matrix(int[][COLS]);
     
    int main(void)
    {
        int i, j, t;
        int array[25];
        srand(time(NULL));
        for (i = 0; i < 25; i++) {
    	array[i] = rand() % 100;
    	//      printf("array [%d] = %d\n", i, array[i]);
        }
     
        for (i = 1; i < 25; ++i)
    	for (j = 24; j >= i; --j) {
    	    if (array[j - 1] > array[j]) {
    		t = array[j - 1];
    		array[j - 1] = array[j];
    		array[j] = t;
    	    }
    	}
     
        for (i = 0, t = 0; i < ROWS - 1; i++) {
    	for (j = 0; j < COLS; j++) {
    	    printf("%i. array[%i] = %d    ", i + ROWS * j + 1,
    		   i + ROWS * j, array[i + ROWS * j]);
    	    fflush(stdout);
    	}
    	printf("\n");
        }
        printf("%i. array[%i] = %d    ", ROWS, ROWS - 1, array[ROWS - 1]);
        return 0;
    }

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Merci

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    je crois que j'ai un blem la:

    voila l'output:

    1. array[0] = 2 10. array[9] = 45 19. array[18] = 78
    2. array[1] = 5 11. array[10] = 55 20. array[19] = 79
    3. array[2] = 13 12. array[11] = 56 21. array[20] = 83
    4. array[3] = 22 13. array[12] = 59 22. array[21] = 85
    5. array[4] = 24 14. array[13] = 63 23. array[22] = 88
    6. array[5] = 31 15. array[14] = 65 24. array[23] = 89
    7. array[6] = 34 16. array[15] = 67 25. array[24] = 91
    9. array[8] = 43


    si vous remarquez le 17eme et 18eme element de la liste s'est envole je ne sais ou

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Hoi,

    Quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // i boucle sur les lignes, j sur les colonnes.
    // t = indice en cours dans le tableau
            for (i=0;i<ROWS;++i)
            {
                for (j=0;j<COLS;++j)
                {
                    t = i + (j*ROWS);
                    if (t<25) { printf("%02d. array[%02d] = %3d  ",t,t,array[t]); }
                }
                // on passe à la ligne suivante
                printf("\n");
            }
            printf("\n");
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    00. array[00] =   8  09. array[09] =  38  18. array[18] =  73
    01. array[01] =  10  10. array[10] =  45  19. array[19] =  77
    02. array[02] =  10  11. array[11] =  46  20. array[20] =  84
    03. array[03] =  11  12. array[12] =  55  21. array[21] =  85
    04. array[04] =  14  13. array[13] =  60  22. array[22] =  87
    05. array[05] =  15  14. array[14] =  63  23. array[23] =  98
    06. array[06] =  18  15. array[15] =  66  24. array[24] =  99
    07. array[07] =  26  16. array[16] =  67
    08. array[08] =  35  17. array[17] =  68

  8. #8
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Merci ca arrange les choses.

    Derniere question comment faire pour faire passer le 17eme element a la troisieme colonne de cette sorte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    00. array[00] =   8  09. array[09] =  38  17. array[17] =  68
    01. array[01] =  10  10. array[10] =  45  18. array[18] =  73
    02. array[02] =  10  11. array[11] =  46  19. array[19] =  77
    03. array[03] =  11  12. array[12] =  55  20. array[20] =  84
    04. array[04] =  14  13. array[13] =  60  21. array[21] =  85
    05. array[05] =  15  14. array[14] =  63  22. array[22] =  87
    06. array[06] =  18  15. array[15] =  66  23. array[23] =  98
    07. array[07] =  26  16. array[16] =  67  24. array[24] =  99
    08. array[08] =  35

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Jol,

    On peut faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            for (i=0;i<ROWS;++i)
            {
                // nbc = nombre de colonnes pour la ligne en cours
     
                int nbc = (i < ROWS-1) ? COLS : 1;
                for (j=0;j<nbc;++j)
                {
                    t = i + (j*ROWS);
                    if (j == COLS - 1) { t--; };
                    if (t<25) { printf("%02d. array[%02d] = %3d  ",t,t,array[t]); }
                }
                printf("\n");
            }
            printf("\n");
    Résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    00. array[00] =   7  09. array[09] =  27  17. array[17] =  46
    01. array[01] =   9  10. array[10] =  30  18. array[18] =  48
    02. array[02] =  10  11. array[11] =  30  19. array[19] =  55
    03. array[03] =  11  12. array[12] =  35  20. array[20] =  61
    04. array[04] =  11  13. array[13] =  35  21. array[21] =  64
    05. array[05] =  20  14. array[14] =  43  22. array[22] =  74
    06. array[06] =  23  15. array[15] =  45  23. array[23] =  82
    07. array[07] =  23  16. array[16] =  45  24. array[24] =  95
    08. array[08] =  25
    Mais c'est du pur bidouillage, alors que mon code précédent est quasi générique, et j'en préfère la sortie à celle que tu veux faire

    A toi de voir

  10. #10
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    excellent, c'est vrai que ca devient du pur bidouillage mais tant c'est que le resultat qui compte...

    j'aimerais savoir si possible que fait cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbc = (i < ROWS-1) ? COLS : 1;

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Ha,
    Citation Envoyé par virtuadrack
    excellent, c'est vrai que ca devient du pur bidouillage mais tant c'est que le resultat qui compte...

    j'aimerais savoir si possible que fait cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbc = (i < ROWS-1) ? COLS : 1;
    C'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int nbc;
    if (i < ROWS-1) { nbc = COLS; }
    else { nbc = 1; }

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/11/2010, 13h46
  2. calcul dans des colonnes
    Par mgrizzly dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/03/2010, 18h25
  3. Réponses: 8
    Dernier message: 16/09/2008, 16h56
  4. Compter des valeurs dans des colonnes
    Par DPhBxl dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/04/2007, 17h01
  5. Réponses: 15
    Dernier message: 22/07/2005, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo