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 :

Une fonction calcul qui ne calcule pas


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Une fonction calcul qui ne calcule pas
    Bonjour

    J'ai un problème dans une fonction calcul en C.
    A priori c'est assez simple mais je trourne en rond et je n'arrive pas a comprendre pourquoi ça ne marche pas.

    Voici le problème:
    Je pars d'un tableau 5x5 cases remplis par des +,- et =.
    Il y a donc en tout 9 variables que j'appelle (A,B,C,D,E,F,G,H,I). Le joueur au moment de la saisie doit entrer 3 valeurs les autres qui sont inconnues sont mises a -1.
    Ma fonction saisie et affichage fonctionne mais le problème réside dans la fonction calcul car voici les équations: C=A+B; G=A+D; H=B+E; F=D+E; I=C+F; I=C+H.

    il y a donc 6 inconnues en tout et il faut les trouver j'ai fait pas mal d'essai mais ils se sont tous soldés par un échec

    voici la première:
    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
    int calcul (int A, int B, int C, int D, int E, int F, int G, int H, int I
    ){	
    	if (A==-1){ A=0;
                 while (A < 10)  { A++;
            if (B==-1){ B=0;
                 while (B < 10)  { B++;
    	if (C==-1){ C=0;
                 while (C < 10)  { C++;
            if (D==-1){D=0;
                 while (D < 10)  { D++;
    	if (E==-1){ E=0;
                 while (E < 10)  { E++;
            if (F==-1){F=0;
                 while (F < 10)  { F++;
    	if (G==-1){ G=0;
                 while (G < 10)  { G++;
            if (H==-1){H=0;
                 while (H < 10)  { H++;
    	if (I==-1){ I=0;
                 while (I < 10)  { I++;
    C=A+B;
    G=A+D;
    H=B+E;
    F=D+E;
    I=C+F;
    I=C+H;}}}}}}}}}}}}}}}}}} 
    printf("%i,%i,%i,%i,%i,%i,%i,%i,%i\n",A,B,C,D,E,F,G,H,I);
    }
    je trouvais qu'elle était assez simple mais bon...
    puis celle-ci
    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
    int calculA (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de A
     if (A!=-1){ calculB (A,B,C,D,E,F,G,H,I);}
       else        { A=0;
                   while (A < 10) { A++;
                      calculB (A,B,C,D,E,F,G,H,I);}  }
     
    int calculB (int A, int B, int C, int D, int E, int F, int G, int H, int I){ // Calcul de B 
    if (B!=-1){ calculC (A,B,C,D,E,F,G,H,I);}
       else        { B=0;
                   while (B < 10) { B++;  
                      calculC(A,B,C,D,E,F,G,H,I); }    }}
     
    int calculC (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de C
     if (C!=-1){ calculD (A,B,C,D,E,F,G,H,I);}
       else        { C=0;
                   while (C < 10) { C++;
                      calculD (A,B,C,D,E,F,G,H,I);}    }} 
     
    int calculD (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de D
     if (D!=-1){ calculE (A,B,C,D,E,F,G,H,I);}
       else        { D=0;
                   while (D < 10) { D++;
                      calculE (A,B,C,D,E,F,G,H,I);}  }}
     
    int calculE (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de E
     if (E!=-1){ calculF (A,B,C,D,E,F,G,H,I);}
       else        { E=0;
                   while (E < 10) { E++;
                      calculF (A,B,C,D,E,F,G,H,I);}  }}
     
     int calculF (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de F
     if (F!=-1){ calculG (A,B,C,D,E,F,G,H,I);}
       else        { F=0;
                   while (F < 10) { F++;
                      calculG (A,B,C,D,E,F,G,H,I);}  }}
     
     int calculG (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de G
     if (G!=-1){ calculH (A,B,C,D,E,F,G,H,I);}
       else        { G=0;
                   while (G < 10) { G++;
                      calculH (A,B,C,D,E,F,G,H,I);}  }}
     
    int calculH (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de H
     if (H!=-1){ calculI (A,B,C,D,E,F,G,H,I);}
       else        { H=0;
                   while (H < 10) { H++;
                      calculI (A,B,C,D,E,F,G,H,I);}  }}
     
    int calculI (int A, int B, int C, int D, int E, int F, int G, int H, int I){  // Calcul de I
     if (I!=-1){ calculfin (A,B,C,D,E,F,G,H,I);}
       else        { I=0;
                   while (I < 10) { I++;
                      calculA (A,B,C,D,E,F,G,H,I);}  }}
    le problème c'est que les boucles while sont fermés alors que la valeur n'est pas encore trouvé
    on m'a conseiller la méthode de cramer mais cela m'a l'air pas mal compliqué
    c'est pour cela que je vous demande votre avis.
    si vous avez des idées ou des suggestions n'hésitez pas à me le dire.

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Il y a déjà un truc bizard dans ton 1er code tu calcul deux fois I differements
    ce qui fait que le 1er calcul ne sert à rien.


  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    c'est surtout que comme en C le passage des arguments de fait par copie, ici ta fonction ne modifie pas tes valeurs

    Si tu veux les voir modifier en sortie, il te faut passer les adresses des arguments...

    Là tu pourras tester correctement leurs valeurs..

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int calcul (int *A, int *B, int *C, int *D, int *E, int *F, int *G, int *H, int *I
    ){	
    	if (*A==-1){ *A=0;
                 while (*A < 10)  { *A++;

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Je trouve que le premier code est vraiment du n' importe quoi.
    D' abord l' identation du code ne nous aide pas beaucoup. Ensuite la programmation elle meme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    C=A+B;
    G=A+D;
    H=B+E;
    F=D+E;
    I=C+F;
    I=C+H;
    tu dis que trois valeurs sont connues, je suppose a, b, c. D'apres ce que je vois les valeurs connus sont a,b,d,e (4 valeurs).
    Aussi, tu fais 81 passages pour calculer les differentes valeurs de a..i. Les valeurs de a..i changent apres chaque pasage dans une boucle. Je ne sais vraiment pas ce que tu veux calculer avec ce code.

Discussions similaires

  1. [PHP 5.0] Existe-il une fonction shuffle qui ne réinitialise pas les clés ?
    Par Dsphinx dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2012, 16h09
  2. une fonction supprime qui ne marche pas!
    Par hindou90 dans le forum C
    Réponses: 17
    Dernier message: 06/02/2010, 12h26
  3. Calcul qui ne marche pas
    Par BoNux83 dans le forum Langage
    Réponses: 8
    Dernier message: 15/10/2006, 02h48
  4. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55
  5. Un calcul qui ne fonctionne pas
    Par renaud26 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/06/2006, 14h21

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