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

Collection et Stream Java Discussion :

Dépassement limites d'un tableau


Sujet :

Collection et Stream Java

  1. #21
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Si j'ai bien compris, dans le cas de mon déplacement vers la droite par exemple ma boucle devrait ressembler à ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0; i < nbLig; i++)
    		{
    			for (int j = nbCol-1; j == 1; j--)

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui et non.

    Déjà for(int index=0; index==12; index++), fait :

    • je déclare un int appelé index et j'y mets la valeur 0
    • je teste s'il vérifie la condition, soit index==12, ce qui n'est pas le cas, puisqu'il vaut 0, donc je n'entre pas dans la boucle


    Rapporté à ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int j = nbCol-1; j == 1; j--)
    • si nbCol=2, alors j vaut 1, ]je teste la condition 1==1, oui, j'entre dans la boucle, j'y fais ce que j'ai faire, je fais j--, donc j vaut 0, donc j==1 est faux, je sors de la boucle et j'ai fait ce qu'on voulait
    • sinon, si nbCol=4, par exemple, j vaut 3, je teste la condition qui est fausse, donc je n'entre pas dans la boucle - je ne déplace rien donc.


    Maintenant si on remplaçait j==1 par j>=1, on pourrait entrer dans la boucle (sauf si nbCol vaut 1, mais il n'y aurait pas de déplacement à faire dans ce cas, donc on reste cohérent). Mais dans ce cas tu ne déplaces jamais l'élément situé tout à gauche, en colonne j=0. On peut optimiser en ne traitant pas l'élément situé tout à droite, donc en colonne j=nbCol-1, puisqu'il ne peut être déplacé à droite (il sortirait).

    Donc, la boucle complète (qui traitera inutilement l'élément situé tout à droite) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int j=nbCol-1; j>=0; j--)
    La boucle optimisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int j=nbCol-2; j>=0; j--)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Je pense avoir compris ton raisonnement, et après avoir testé j'ai le plaisir de constater que ce problème est résolu!

    Merci encore!

  4. #24
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Je suis désolée de solliciter encore votre aide mais il faut croire qu'un problème en amène un autre

    Maintenant que mes cases se déplacent bien comme il faut, je constate que certaines dépassent les limites du tableau et donc disparaissent!

    Par exemple lorsque j'ai un 2 sur la toute première ligne du tableau et que je lance un déplacement vers le haut, ce 2 va disparaître et être remplacé par une case vide, comme s'il était monté à la case supérieure

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Sans le code, je ne sais que dire.

    A part peut-être dire que les déplacements verticaux sont similaires aux déplacements horizontaux dans la logique des boucles (donc vers le haut, normalement c'est vers l'index 0, donc c'est comme un déplacement vers la gauche, et vers le bas, comme un déplacement vers la droite), sauf qu'il faut échanger les deux lignes avec for (celui sur le i (les lignes) dans celui sur les j (les colonnes)). Si les déplacements horizontaux fonctionnent, les verticaux devraient fonctionner alors.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    N'étant pas sur de la boucle que tu utilise et des affectation que tu fait sur ton tableau.
    Peux-tu, nous montrer le code actuelle ?

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  7. #27
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    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
    // Déplacement vers le haut
    			public void deplacementH()
    			{
    				for (int i = 0; i <= nbLig-1; i++)
    				{
    					for (int j = 0; j < nbCol; j++)
    					{
    						if (grille[i][j] != 0)
    						{
    							int a = i;
    							while (a > 0 && grille[a-1][j] == 0)
    							{
    								a--;
    							}
    							if (a >= 0 && grille[a][j] == 0)
    							{
    								grille[a][j] = grille[i][j];
    								grille[i][j] = 0;
    							}
     
    						}	
    					}
    				}
     
    			}
    Voici le code de la fonction déplacementHaut

  8. #28
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Je pense avoir trouvé une solution mais je suis pas sure que le code soit bien optimisé

    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
    // Déplacement vers le haut
    			public void deplacementH()
    			{
    				for (int i = 0; i <= nbLig-1; i++)
    				{
    					for (int j = 0; j < nbCol; j++)
    					{
    						if (grille[i][j] != 0)
    						{
    							int a = i;
     
    							if (a == 0 && grille[a][j] != 0)
    							{
    								// On ne fait rien
    							}
     
    							else
    							{
    							while (a > 0 && grille[a-1][j] == 0)
    							{
    								a--;
    							}
    							if (a >= 0 && grille[a][j] == 0)
    							{
    								grille[a][j] = grille[i][j];
    								grille[i][j] = 0;
    							}
    							}
    						}	
    					}
    				}
     
    			}

  9. #29
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i <= nbLig-1; i++) {
        for (int j = 0; j < nbCol; j++) {
            if (grille[i][j] != 0) {
                int a = i;
                if (a == 0 && grille[a][j] != 0)
    Sachant que a=i;, alors grille[a][j] != 0 et identique à grille[i][j] != 0.
    Ce qui veux dire que tu peux simplifié ta condition en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i <= nbLig-1; i++) {
        for (int j = 0; j < nbCol; j++) {
            if (grille[i][j] != 0) {
                if (i == 0)
    Du coup, cela pourrai être remonté plus au haut dans ton traitement. Mais je ne suis pas sûr que le comportement implémenté soit ce que tu veux.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  10. #30
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Merci pour la solution proposée @kolodz, la boucle que j'ai écrite fonctionne très bien en utilisant a ou i

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Regarde ce que j'ai dit au sujet de la transformation du déplacement vers la gauche en déplacement vers le haut : tu dois échanger les for.

    Pour un déplacement à gauche, pour chaque ligne, tu parcours les items (les colonnes dans la ligne) pour les déplacer. Pour un déplacement vers le haut, pour chaque colonne, tu parcours les items (les lignes dans la colonne)... Les bornes doivent suivre bien sûr (il suffit pas seulement d'échanger les 2 lignes de code).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #32
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Je ne comprends pas bien ta solution @joel.drigo, c'est peut être mieux d'utiliser la méthode que j'ai compris

  13. #33
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Mets moi le code de ta méthode de déplacement à gauche et je vais t'expliquer : c'est super simple.

    Quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i=0; i<nbLig; i++) {
     
        for( int j=0; j<nbCol; j++ ) {
     
            int c = grille[i][j];
     
        }
     
    }
    Tu parcours tes lignes, et pour chaque ligne, tu parcours les colonnes dans cette ligne.


    Si tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int j=0; j<nbCol; j++) {
     
        for( int i=0; i<nbLig; i++ ) {
     
            int c = grille[i][j];
     
        }
     
    }
    Tu parcours tes colonnes, et pour chaque colonne, tu parcours les lignes dans cette colonne.

    Donc si pour faire un traitement qui fait par exemple comme ça pour des lignes dans un tableau carré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i=0; i<nbLig; i++) {
     
        for( int j=a; j<b; j++ ) {
     
            int c = grille[i][j];
     
        }
     
    }
    On pourra avoir exactement le même traitement pour les colonnes (si le tableau est carré, il y a le même nombre de lignes et de colonnes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int j=0; j<nbCol; j++) {
     
        for( int i=a; i<b; i++ ) {
     
            int c = grille[i][j];
     
        }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #34
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Après cet exemple je pense avoir compris

  15. #35
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Loin de moi l'envie d'exagérer mais je souhaiterai vous solliciter de nouveau

    Je voudrais maintenant réussir à placer la somme de deux cases de mon tableau dans une seule.. Mais en vain..

    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
    if (grille[i][j] != 0)
    						{
    							int a = i;
     
    							if (!(a == 0 && grille[a][j] != 0))
    							{
    								while (a > 0 && grille[a-1][j] == 0)
    								{
    									a--;
    								}
     
    								if (a >= 0 && grille[a][j] == 0)
    								{
    									grille[a][j] = grille[i][j];
    									grille[i][j] = 0;
    								}
    							}
     
    							if (grille[i][j] == grille[a][j])
    							{
    								grille[a][j] = grille[i][j] * 2;
    								grille[i][j] = 0;
    							}
    						}
    Je ne pense pas que mon code soit complètement faux puisque j'obtiens bien le "0" dans la case grille[i][j] .. Cependant la case grille[a][j] (correspondant à grille[i-1][j]) conserve sa valeur de départ :s

  16. #36
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Première solution, après avoir fait le mouvement d'une tuile, tu détermines si le mouvement a été arrêté parce qu'on était au bord ou contre une tuile, et si cette la valeur de cette tuile est égale à celle qui est déplacée.

    Voilà le test concerné dans le dernier code posté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (a >= 0 && grille[a][j] == 0) {
       grille[a][j] = grille[i][j];
       grille[i][j] = 0;
    }
    Donc pour vérifier que ça s'est arrêté contre le bord : a == 0.
    Donc si a!=0 (ça ne s'est pas arrêté contre le bord) et que grille[a-1][j]==grille[i][j], on fait pas grille[a][j] = grille[i][j], mais grille[a-1][j] = grille[i][j]*2. On fait bien sûr grille[i][j] = 0 dans les deux cas.

    Tu peux même en plus tester juste après si on a atteint 2048 (if (grille[a-1][j]==2048).


    Seconde solution, dans la boucle qui détermine jusqu'où on bouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!(a == 0 && grille[a][j] != 0))
    Tu testes aussi (en plus de si la case est vide, si la case contient une tuile de même valeur que celle déplacée), et dans le bloc tu traites ce cas particulier comme la fusion (plus arrêt), et non le déplacement.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #37
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    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
    if (grille[i][j] != 0)
    						{
    							int a = i;
     
    							if (!(a == 0 && grille[a][j] != 0))
    							{
    								while (a > 0 && grille[a-1][j] == 0)
    								{
    									a--;
    								}
     
    								if (a >= 0 && grille[a][j] == 0)
    								{
    									grille[a][j] = grille[i][j];
    									grille[i][j] = 0;
     
    								}
     
    								if (a != 0 && grille[a-1][j] == grille[i][j])
    								{
    									grille[a-1][j] = grille[i][j] * 2;
    									grille[i][j] = 0;
    								}
    							}
    						}

    Je pensais réussir avec ce code mais c'est encore un échec

    Vois-tu une erreur?

  18. #38
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (a != 0 && grille[a-1][j] == grille[a][j])
    								{
    									grille[a-1][j] = grille[a-1][j] * 2;
    									grille[a][j] = 0;
    								}
    Ca y est ça fonctionne! (dans le cas de mon déplacement vers le haut du moins)

    Merci @joel.drigo, tu m'as tellement aidé depuis hier! Merci beaucoup!

Discussions similaires

  1. Problème limite d'indice tableau
    Par Thyyb dans le forum VB.NET
    Réponses: 12
    Dernier message: 11/12/2013, 15h47
  2. Fixer les limites d'un tableau
    Par simipi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/12/2011, 12h52
  3. [MySQL] Mysql LIMIT dans un tableau html
    Par xunil2003 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/03/2010, 08h11
  4. dépassement limite de tables
    Par Invité dans le forum Développement
    Réponses: 12
    Dernier message: 19/12/2008, 11h58
  5. Taille limite d'un tableau
    Par torNAdE dans le forum C++
    Réponses: 15
    Dernier message: 21/10/2006, 12h15

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