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 :

Inverser elements dans un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Par défaut Inverser elements dans un tableau
    Bonjour à tous !
    Je suis confronté à un problème pour inverser l'ordre des éléments d'un tableaux à deux dimensions; notamment pour inverser les lignes. En réalité, j'arrive à inverser l'ordre des éléments de la première ligne et non des suivantes ..

    PS: l'encodage et l'affichage se fait par pointeur, l'inversion n'étant par pointeur car c'est pour me faciliter la tâche, je mettrai l'inversion avec des pointeurs lorsque la version par indice fonctionnera !
    Voici mon code source:

    Et en prime, voilà un screenshot lorsque j'encode et je veux inverser
    [IMG=http://img521.imageshack.us/img521/3608/tabdeux.png][/IMG]
    Uploaded with ImageShack.us

    Merci de prendre mon problème en considération
    Cracko'
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    #include <stdio.h>
    #define VMAX 10
    void main()
    {
    	int tab[VMAX][VMAX],i,j,nbl,nbc,*pt,temp,etat,k;
    	do
    	{
    		printf("Saisir le meme nbres de lignes et de colonnes");
    		fflush(stdin);
    		scanf("%d",&nbl);
    	}while(nbl<0||nbl>10);
    	nbc=nbl;
    	//encodage tableau
    	printf("\nEncodage du tableau\n");
    	pt=&tab[0][0];
    	for(i=0;i<nbl;i++)
    	{
    		for(j=0;j<nbc;j++)
    		{
    			printf("[%d][%d]",i,j);
    			fflush(stdin);
    			scanf("%d",pt);
    			pt++;
    		}
    	}
    	//Affichage du tableau
    	printf("Affichage du tableau");
    	pt=&tab[0][0];
    	for(i=0;i<nbl;i++)
    	{
    		for(j=0;j<nbc;j++)
    		{
    			printf("\n[%d][%d]:%d",i,j,*pt);
    			pt++;
    		}
    	}
                  //boucle qui inverse l'ordre des lignes du tableau, c'est ici que ça coince
    		for(i=0;i<nbl-1;i++)
    		{
    			for(j=0,k=nbc-1;j<k;j++,k--)
    			{
    				temp=tab[i][j];
    				tab[i][j]=tab[i][k];
    				tab[i][k]=temp;
    			}
    		}
    		printf("\nAffichage\n");
    		//Affichage du tableau inverse
    		pt=&tab[0][0];
    		for(i=0;i<nbl;i++)
    			{
    				for(j=0;j<nbc;j++)
    				{
    					printf("\n[%d][%d]:%d",i,j,*pt);
    					pt++;
    				}
    			}
    		fflush(stdin);
    		getchar();
     
     
    }

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /* boucle qui inverse l'ordre des lignes 
    du tableau, c'est ici que ça coince */
      for(i=0;i<nbl-1;i++)
        ..
    Pourquoi nbl-1 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0; i < nbl; ++i) {...}
    suffirait.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Par défaut
    Bonjour, merci pour la réponse rapide !

    J'ai enlevé le
    nbc-1 et nbl-1
    et dès lors j'ai :



    J'obtiens en faisant :
    1
    2
    3
    4
    le résultat suivant:
    3
    2
    1
    4
    Au lieu d'obtenir ce le résultat ci-dessus, je ne devrais pas plutôt obtenir ?:
    4
    3
    2
    1

    Merci

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Il fallait enlever le premier -1, mais garder le second...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* boucle qui inverse l'ordre des lignes 
           du tableau, c'est ici que ça coince */
        for (i = 0; i < nbl; i++) {
            for (j = 0, k = nbc - 1; j < k; j++, k--) {
                temp = tab[i][j];
                tab[i][j] = tab[i][k];
                tab[i][k] = temp;
            }
        }
    En effet, on veut travailler sur toutes les lignes, donc de 0 à N-1 d'où for(i = 0; i < nbl; i++).

    Pour les colonnes, on veut inverser le première (0) avec le dernière (N-1), donc il faut écrire :
    for(j = 0; k = nbc-1; ...)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Par défaut
    J'ai fait comme exactement comme vous m'aviez dit et la dernière ligne ne s'inverse pas :s

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par Crackozor Voir le message
    J'ai fait comme exactement comme vous m'aviez dit et la dernière ligne ne s'inverse pas :s
    Pouvez vous poster le nouveau code ?
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/11/2009, 15h49
  2. Réponses: 2
    Dernier message: 05/02/2007, 16h16
  3. Comment faire afficher la position d'un element dans un tableau
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/11/2006, 12h44
  4. [VB6] Nombre d'element dans un tableau ?
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/09/2006, 22h23
  5. [langage] Compter des éléments dans un tableau
    Par helene22500 dans le forum Langage
    Réponses: 29
    Dernier message: 23/05/2005, 11h38

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