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 :

Tester un carré magique


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Par défaut Tester un carré magique
    je veut faire un programme que l utilsateur entre la taille du magic carré aprés il entre les numero de la magic carré et aprés le programme affiche le rsultas (est ce qu il est magic carré ou non) le programme fait seulemnt la recherche aprés le remplissage
    voila le code et je sais pas ou la faute
    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    #include<stdio.h>
     
    #include<stdlib.h>
     
    #include<conio.h>
     
    main()
     
    {
     
          int t[50][50],a=0,s[50],n,test=1,i,j;
     
          printf("Donner la taille du carre  \t");
     
          scanf("%d",&n);
     
          printf("Remplissez le tableau \t");
     
          for(i=0;i<n;i++)
     
          {
     
                          for(j=0;j<n;j++)
     
                          {
     
                                          printf("Tapez la case T[%d][%d]\n",i+1,j+1);
     
                                          scanf("%d",&t[i][j]);
     
                          }
     
          }
     
     
     
          for(j=0;j<n;j++)
     
                          {
     
                                          s[j]=0;
     
                          }
     
          for(j=0;j<n;j++)
     
          {a=0;
     
                          for(i=0;i<n;i++)
     
                          a=t[i][j]+a;
     
          s[j]=a;}
     
          for(j=0;j<n;j++)
     
          {
     
                            if(s[j]!=s[j+1])
     
                            test=1;
     
          }
     
     
     
          if(test==0)
     
          {for(i=1;i<n;i++)
     
          {a=0;
     
                          for(j=1;j<n;j++)
     
                          a=t[i][j]+a;
     
          s[i]=a;}}
     
     
     
          for(i=0;i<n-1;i++)
     
          {
     
                            if(s[i]!=s[i+1])
     
                            test=1;
     
          }
     
     
     
          if(test==0)
     
          {a=0;
     
                     for(i=0;i<n;i++)
     
                     a=t[i][n-i]+a;
     
                     if(s[j]!=a)
     
                     test=1;
     
                     }
     
     
     
          if(test==0)
     
          {a=0;
     
                     for(i=0;i<n;i++)
     
                     a=t[n-i][i]+a;
     
                     if(s[j]!=a)
     
                     test=1;
     
                     }
     
     
     
          if(test==1)
     
          printf("le carre n'est pas magique \n");
     
          else
     
          {
     
              printf("le carre est pas magique \n");
     
                for(i=0;i<n;i++)
     
          {
     
                          for(j=0;j<n;j++)
     
     
     
                                          printf("%d \t",t[i][j]);
     
                                          printf("\n");
     
     
     
          }
     
          }
     
              getche ();          }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je vous pris de reformuler le problème car là, je n'ai rien compris du tout de ce qui était en place et de ce qui ne fonctionner pas.
    Par explication du problème, j'entends:
    - Votre réflexion sur la résolution du programme (algorithme)
    - La description du bug:
    - - Le résultat attendu
    - - Le résultat que vous avez actuellement (et en quoi il est faut)


    Je tiens aussi à ajouter que si vous avez des problèmes dans votre code vous pouvez utiliser un debuggueur qui vous permettra de suivre l'exécution du programme pas à pas tout en regardant les valeurs des variables.

    J'ai reformé le programme (je n'ai pas touché les 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
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
     
    main()
    {
        int t[50][50],a=0,s[50],n,test=1,i,j;
     
        printf("Donner la taille du carre  \t");
        scanf("%d",&n);
     
        printf("Remplissez le tableau \t");
     
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                printf("Tapez la case T[%d][%d]\n",i+1,j+1);
                scanf("%d",&t[i][j]);
            }
        }
     
        for(j=0;j<n;j++)
        {
            s[j]=0;
        }
     
        for(j=0;j<n;j++)
        {
            a=0;
     
            for(i=0;i<n;i++)
     
            a=t[i][j]+a;
            s[j]=a;
        }
     
        for(j=0;j<n;j++)
        {
            if(s[j]!=s[j+1])
                test=1;
        }
     
        if(test==0)
        {
            for(i=1;i<n;i++)
            {
                a=0;
                for(j=1;j<n;j++)
                    a=t[i][j]+a;
     
                s[i]=a;
            }
        }
     
        for(i=0;i<n-1;i++)
        {
            if(s[i]!=s[i+1])
                test=1;
        }
     
        if(test==0)
        {
            a=0;
     
            for(i=0;i<n;i++)
                a=t[i][n-i]+a;
     
            if(s[j]!=a)
                test=1;
        }
     
        if(test==0)
        {
            a=0;
     
            for(i=0;i<n;i++)
                a=t[n-i][i]+a;
     
            if(s[j]!=a)
                test=1;
        }
     
        if(test==1)
            printf("le carre n'est pas magique \n");
        else
        {
            printf("le carre est pas magique \n");
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                    printf("%d \t",t[i][j]);
                printf("\n");
            }
        }
        getche ();          
    }
    Note1: Le prototype de la fonction main() doit être un des suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main()
    int main(int argc, char** argv)
    int main(int argc, char** argv, char** arge)
    Note2: la bibliothèque Conio est très désagréable car elle ne permet pas d'avoir du code qui fonctionne sous Linux. Surtout pour l'utilisation qui en est fait, je ne vois pas l'intérêt. Ainsi je vous conseillerai de remplacer toute référence à celle-ci par du code C classique.
    (Oui oui, même getch() peut être fait dans le langage C, sans grande dificulté (voir la FAQ C)
    Note3: Ce n'est pas getche() mais getch()
    Note4: Depuis que j'ai réindenter le code, des erreurs (boucles :p) sont très visibles.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Par défaut
    merci pour tous ça mais est ce que tu as compris ce que je veut réaliser
    si tu as compris bien le but de se programme de magic carré tu peut me dire ou se trouve la faute est ce que je doit faire exactement sil vous plait ne travailler pas avec les pointeur je lé conné pas

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par komat Voir le message
    merci pour tous ça mais est ce que tu as compris ce que je veut réaliser
    si tu as compris bien le but de se programme de magic carré tu peut me dire ou se trouve la faute est ce que je doit faire exactement sil vous plait ne travailler pas avec les pointeur je lé conné pas
    Et bah, le truc c'est que je n'ai pas compris la question, ni meme le probleme.
    Je veux la reponse aux choses suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Je vous pris de reformuler le problème car là, je n'ai rien compris du tout de ce qui était en place et de ce qui ne fonctionner pas.
    Par explication du problème, j'entends:
    - Votre réflexion sur la résolution du programme (algorithme)
    - La description du bug:
    - - Le résultat attendu
    - - Le résultat que vous avez actuellement (et en quoi il est faut)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Par défaut
    et bien tous simplement je veut faire un programme que le l utilisateur donne la taille du magic carré et aprés l utilisateur remplie le tableau a 2 dimension et aprés le programme affiche le resultas suivant: si les nombre qui ont eté saisie par l utisateur represente un magic carré le programme va afficher que c est un magic carré si le contraire il va affichier que c est pas une magic carré.
    c est simple le programme fait seulement la recherche et affiche le resultas.
    pour ma reflexion sur le code je l ai donné déja, mon code il n 'est pas complet je sait pas ou se trouve l erreur (pas erreur de compilation)
    si vous avez une idé pour m aider a realiser mon programme ta qu a l dire
    et merci d avance.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Pour les prochaines (effectif à partir d'ici) commentez votre code !

    J'ai remarqué un bug:
    - La variable de test n'est pas remise à zero avant chaque nouveau test.

    Si vous pouviez me donner un carré magique de test, j'en serai heureux
    Sinon, vous pouviez voir le problème avec un debuggueur, donc cela me ferai très plaisir que vous cherchiez à en utiliser un
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre émérite Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Bonjour,
    1.
    Etant donnée la longueur de votre code et que vous ne donnez aucune précision sur votre erreur, personne ne sera en mesure de vous aider.
    Je simplement survolé le code et a première vu, je dirai qu'il y a un problème dans la variable "test", celle-ci est initialisé à 1 est aucune affection test=0 n'est faite (à moins que je l'ai loupé ), de cette manière la matrice ne pourra jamais être détectée comme matrice magique dans votre programme.

    2.
    +1 pour ce qu'a dit LittleWhite concernant le debogage : (Je suis 100% d'accord pour le reste aussi)
    Essayer par exemple d'afficher la variable "test" aprés chaque étape de votre programme (Calcul de somme des lignes, des colonnes, puis des diagonales). Ceci vous aidera à repérer plus facilement ou est ce que l'erreur se situe.

    Edit : Désolé pour la répétition je n'avais pas vu le précédent post

  8. #8
    Membre expérimenté Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Par défaut
    Je pense qu'une partie du problème peut-être résolue en initialisant test à 0.
    En effet ici on l'initialise à 1.
    Puis on fait:
    for(j=0;j<n;j++)
    {
    if(s[j]!=s[j+1])
    test=1;
    }

    if(test==0)
    C'est la première utilisation de la variable test, donc étant donné qu'on l'a initialisé à 1, aucune chance qu'elle passe le test.

Discussions similaires

  1. Problème de vitesse lors de recherche de carré magique
    Par niniwizard dans le forum Prolog
    Réponses: 22
    Dernier message: 16/01/2009, 13h11
  2. Carré magique mauvais affichage
    Par bdptaki dans le forum Delphi
    Réponses: 8
    Dernier message: 14/05/2007, 16h43
  3. [TP] Programme carré magique
    Par Henry22 dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 31/03/2007, 14h40
  4. probléme carré magique
    Par pipip dans le forum C
    Réponses: 4
    Dernier message: 29/11/2006, 18h23
  5. le carré magique
    Par mahis_ dans le forum C
    Réponses: 29
    Dernier message: 15/11/2006, 17h28

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