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 :

ptit pb magique


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut ptit pb magique
    Bonjoursoir à tous

    j'ai un petit probleme qui semble tout bete mais j'arrive à mettre la main dessus etant donné que je suis debutant

    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
     
    #include <stdio.h>
    #define DIM 3 ; 
    #define DIMMAX 11 ; 
     
    int n,rangee,colonne; 
    int carre[3][3] ; 
    int magique ;
     
    void lecturecarre ()
    {
       int i,j ;
     
       for (i=0 ; i<=2 ; ++i)
          for (j=0 ; j<=2 ; ++j)
             scanf("%d",&carre[i][j]) ;
    }
     
    void Testercarre ()
    {
       int s1,s2,i,j ;
     
       magique=1;
       s1 = s2 = 0;
     
       for (i=0 ; i<=2 ; ++i)
          s1 = s1 + carre[i][i];
     
       printf("S1=%d\n",s1);
       for (i=0 ; i<=2 ; ++i)
          s2 = s2 + carre[i][2-i];
       printf("S2=%d\n",s2);
       if (s2 == s1)
          magique=1; 
       else 
          magique=0;
       printf("magique=%d\n",magique);
     
       i=0;
       while (magique=1 && i<=2)
       { 
          s2=0;
          for (j=0 ; j<=2 ; ++j)
             s2=s2 + carre[i][j];
          printf("S22=%d\n",s2);
          if (s2 == s1)
             magique=1;
          else 
             magique=0;
          ++i ;
          printf("magique=%d\n",magique); 
       }
     
       j=0;
       while (magique=1 && j<=2)
       {
          s2=0;
          for (i=0 ; i<=2 ; ++i)
             s2=s2 + carre[i][j];
          printf("S23=%d\n",s2);
          if (s2 == s1)
             magique=1;
          else  
             magique=0;
          ++j ;
          printf("magique=%d\n",magique);
       }
       printf("magique=%d\n",magique);/*quand on teste le programme ce magique là vaut 0 tandis que celui juste avant vaut 1*/
     
       if (magique==1)
          printf("le carre est  magique\n");
       else
          printf("le carre est pas magique\n");
    }
     
    main()
    {
       lecturecarre();
       Testercarre ();
    }
    Quand on teste le programme , la valeur magique vaut 1 dans les boucles while , mais des qu'on en sort elle vaut 0 .

    Où serait le probleme selon vous ?

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour
    Merci de penser à mettre des balise code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (magique=1 && j<=2){
    met la valeur magique à 1 puis test si j est inférieur ou égal à 2, si j égale 3 ou plus, on sort de la boucle ET magique passe à 1.
    on remplace ca par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (magique==1 && j<=2){

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Edit: Argh, grillé

    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
    #ifdef __cplusplus
    #error "C uniquement"
    #endif
     
    #include <stdio.h>
     
    //Premiere erreur: ces definitions ne sont pas utilisees
    //seconde erreur: generalement, on ne met pas de ;
    //#define DIM 3 ;
    //#define DIMMAX 11 ;
     
    int n,rangee,colonne;
    int carre[3][3] ;
    int magique ;
     
     
    void lecturecarre ()
    {
    int i,j ;
     
    for (i=0 ; i<=2 ; ++i)
    	for (j=0 ; j<=2 ; ++j)
    		scanf("%d",&carre[i][j]) ;
    }
     
     
    void Testercarre ()
    {
    int s1,s2,i,j ;
    magique=1;
    s1 = s2 = 0;
     
    for (i=0 ; i<=2 ; ++i)
    	s1 = s1 + carre[i][i];
     
     
    printf("S1=%d\n",s1);
    for (i=0 ; i<=2 ; ++i)
    	s2 = s2 + carre[i][2-i];
    printf("S2=%d\n",s2);
     
    if (s2 == s1)
    	magique=1;
    else
    	magique=0;
    printf("magique=%d\n",magique);
     
    i=0;
     
    while (magique=1 && i<=2)
    	{
    	s2=0;
    	for (j=0 ; j<=2 ; ++j)
    		s2=s2 + carre[i][j];
    	printf("S22=%d\n",s2);
    	if (s2 == s1)
    		magique=1;
    	else
    		magique=0;
    	++i ;
    	printf("magique=%d\n",magique);
    	}
     
    j=0;
    while (magique=1 && j<=2)
    	{
    	s2=0;
    	for (i=0 ; i<=2 ; ++i)
    		s2=s2 + carre[i][j];
    	printf("S23=%d\n",s2);
    	if (s2 == s1)
    		magique=1;
    	else magique=0;
    	++j ;
    	printf("magique=%d\n",magique);
    	}
    printf("magique=%d\n",magique);/*quand on teste le programme ce magique là vaut 0 tandis que celui juste avant vaut 1*/
     
    if (magique==1)
    	printf("le carre est magique\n");
    else
    	printf("le carre est pas magique\n");
    }
     
     
    /* Fonc principale */
    void magiquemain()
    {
    lecturecarre();
     
    Testercarre ();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gcc.exe -c TestMagique.c -o TestMagique.o -Wall -Wextra
     
    TestMagique.c: In function `Testercarre':
    TestMagique.c:47: warning: suggest parentheses around assignment used as truth value
    TestMagique.c:62: warning: suggest parentheses around assignment used as truth value
    Un = mis à la place d'un == ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut
    MERKI INFINIEMENT !!!!!

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: ptit pb magique
    Citation Envoyé par Andrey
    j'ai un petit probleme qui semble tout bete mais j'arrive à mettre la main dessus etant donné que je suis debutant
    Quand on teste le programme , la valeur magique vaut 1 dans les boucles while , mais des qu'on en sort elle vaut 0 .
    <...>
    Où serait le probleme selon vous ?
    En dehors de ce qui a été dit : trop de code inutile. Pas assez de code utile...
    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
     
    #include <stdio.h>
    #include <assert.h>
     
    static void saisie_carre (int carre[][3], int n)
    {
       int i;
     
       for (i = 0; i < n; ++i)
       {
          int j;
     
          for (j = 0; j < n; ++j)
          {
             printf ("[%d][%d] = ", i, j);
             fflush (stdout);
             scanf ("%d", carre[i] + j);
          }
       }
    }
     
    static void tester_carre (int carre[][3], int n)
    {
       int magique;
       int s_ref = 0;
       {
     
          /* diagonale de reference */
          {
             int i;
     
             for (i = 0; i < n; ++i)
             {
                s_ref += carre[i][i];
             }
          }
          printf ("s_ref=%d\n", s_ref);
     
          /* diagonale */
          {
             int s=0;
             int i;
     
             for (i = 0; i < n; ++i)
             {
                assert (2 - i < n);
                assert (2 - i >= 0);
                s += carre[i][2 - i];
             }
          printf ("s=%d\n", s);
     
          magique = s_ref == s;
          }
       }
       printf ("magique=%d (diags)\n", magique);
     
       {
          int i;
          for (i = 0; magique && i < n; i++)
          {
             int j;
             int s = 0;
             for (j = 0; j < n; ++j)
             {
                s += carre[i][j];
             }
             printf ("s=%d\n", s);
             magique = s_ref == s;
          }
          printf ("magique=%d (lins)\n", magique);
       }
     
       {
          int j;
          for (j = 0; magique && j < n; j++)
          {
             int i;
             int s = 0;
             for (i = 0; i < n; ++i)
             {
                s += carre[i][j];
             }
             printf ("s=%d\n", s);
             magique = s_ref == s;
          }
          printf ("magique=%d (cols)\n", magique);
       }
     
       printf ("le carre %s magique\n", magique == 1 ? "est" : "n'est pas");
    }
     
    int main (void)
    {
       int carre[3][3];
     
       saisie_carre (carre, 3);
       tester_carre (carre, 3);
     
       return 0;
    }

Discussions similaires

  1. [langage] Ptit Probleme expression réguliere avec perl
    Par Shoot Again dans le forum Langage
    Réponses: 3
    Dernier message: 02/12/2004, 12h44
  2. [langage] Expression regulière magique?
    Par ma2th dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2004, 08h19
  3. besoin d'un ptit coup de pouce
    Par mickyoun dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2004, 11h58
  4. [LG]Ptit probleme de saisie
    Par rookie_man dans le forum Langage
    Réponses: 4
    Dernier message: 12/11/2003, 12h30
  5. [langage] ptit souci de syntaxe
    Par marouanitos dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2003, 10h28

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