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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ludus
    Inscrit en
    janvier 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ludus

    Informations forums :
    Inscription : janvier 2019
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Programme de carré magique qui ne fait rien

    Hello,
    Je dois faire un carré magique en C mais j'ai un petit problème voici mon code :

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    #include <stdio.h>
    #include <stdlib.h>
    #define TAILLE 5
    typedef struct tJeton{
     
        int nX;
        int nY;
     
    }tJeton;
     
    typedef enum Bool {true=1, false=0}Bool;
     
    void InitTab(int nTab[TAILLE][TAILLE]);
    void Moving(int nTab[TAILLE][TAILLE], tJeton jeton, int nCpt);
    void Warp(int nTab[TAILLE][TAILLE], tJeton jeton);
    void Place(int nTab[TAILLE][TAILLE], tJeton jeton, int nCpt);
    void Display(int nTab[TAILLE][TAILLE]);
    Bool CaseIsVoid(int nTab[TAILLE][TAILLE], tJeton jeton);
     
    int main()
    {
        int nTab[TAILLE][TAILLE];
        int nCpt=2;
        tJeton Jeton={3,2};
        InitTab(nTab[TAILLE][TAILLE]);
        nTab[3][2] = 1;
     
       for (nCpt; nCpt < TAILLE; nCpt++)
        {
            Moving(nTab[TAILLE][TAILLE],Jeton,nCpt);
     
        }
        Display(nTab[TAILLE][TAILLE]);
     
        return 0;
    }
     
    void InitTab(int nTab[TAILLE][TAILLE]){
     
        for (int i = 0; i < TAILLE; ++i)
        {
     
            nTab[i][i] = 0;
     
        }
     
    }
     
    void Warp(int nTab[5][5], tJeton jeton){
     
        if (jeton.nX == 6){
            jeton.nX = 1;
        }
     
    }
     
    Bool CaseIsVoid (int nTab[TAILLE][TAILLE], tJeton jeton){
     
        if (nTab[jeton.nX][jeton.nY]=0){
     
            return true;
     
        }else{
     
            return false;
     
        }
     
    }
     
    void Place(int nTab[5][5], tJeton jeton, int nCpt){
     
        nTab[jeton.nX][jeton.nY]=nCpt;
     
    }
     
    void Moving(int nTab[5][5], tJeton jeton, int nCpt){
     
        jeton.nX = jeton.nX+=1;
        jeton.nY = jeton.nY-=1;
        Warp(nTab, jeton);
        if (CaseIsVoid(nTab[5][5],jeton )== true)
        {
            Place(nTab[5][5], jeton, nCpt);
        }else{
            jeton.nX = jeton.nX-=1;
            jeton.nY = jeton.nY-=1;
            Warp(nTab, jeton);
            Place(nTab[5][5], jeton, nCpt);
        }
     
    }
     
    void Display(int nTab[TAILLE][TAILLE]){
     
    int cpt;
     
    for (cpt = 0; 1 < 5; cpt++)
    {
     
        printf("%d\n",nTab[cpt,1]);
        printf("%d\n",nTab[cpt,2]);
        printf("%d\n",nTab[cpt,3]);
        printf("%d\n",nTab[cpt,4]);
        printf("%d\n",nTab[cpt,5]);
    }
     
     
     
    }
    Tout fonctionne mais le programme ne me retourne rien...
    j'ai l'impression qu'il ne rentre pas dans les fonctions et termine le programme après la void InitTab qui sert a initialiser le tableau a 0, j'y comprend rien les boucles semblent ne pas fonctionnes ! :hap:
    Si quelqu’un peux m’aider se serais super merci !

  2. #2
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    2 737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 2 737
    Points : 6 408
    Points
    6 408

    Par défaut

    Je pense plutôt que ton programme plante

    Explique nous le test de la boucle for ligne 98 for (cpt = 0; 1 < 5; cpt++).

    1 est toujours inférieur à 5


    Et sinon dans ton code :
    • Tu hardcodes la taille 5 au lieu d'utiliser ton typedef
    • Chainer les affectations, pourquoi pas. Mais ceci jeton.nX = jeton.nX+=1; je m'en méfierai

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 840
    Points : 4 352
    Points
    4 352

    Par défaut

    Bonjour,

    Il y a de très nombreuses erreurs dans ton code. Le compilateur doit t'en signaler la plupart! Vérifie que les Warnings sont bien activés et lis les bien.
    Exemple : ligne 25 InitTab(nTab[TAILLE][TAILLE]); tu passes en paramètre à la fonction une case du tableau au lieu de passer le tableau lui-même, en plus la case est au dela du maximum. Il faut écrire InitTab( nTab );, ça doit faire bondir le compilateur.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 785
    Points : 19 242
    Points
    19 242
    Billets dans le blog
    1

    Par défaut

    Bonjour
    Citation Envoyé par Nageat Voir le message
    printf("%d\n",nTab[cpt,1]);
    Excellent !!! Et le plus amusant, c'est que cette instruction est légale (l'opérateur "virgule" séquence les valeurs et ne garde que la dernière). Au final ça revient à écrire printf("%d\n",nTab[1]);. Maintenant l'instruction fera-t-elle ce que tu espérais qu'elle fasse là c'est autre chose...

    Citation Envoyé par Nageat Voir le message
    Tout fonctionne
    Ca se voit...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

Discussions similaires

  1. Besoin d'aide pour une requête de MAJ (modif. de car.)
    Par ptitscrat dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 18h27
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 20h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 14h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05

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