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 :

Erreur du programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut Erreur du programme
    je ne trouve pas l'erreur que j'ai fait, mon programme ne fait que demander "Entrez la puissance d'attaque du vaisseau en hangars :" et quand je lui donne la donnée il me repose cet question sans rien faire...

    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
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    #include <stdio.h>
     
    #define p_composant1 1500000
    #define p_composant2 850000
    #define p_composant3 1700000
    #define p_composant4 3000
    #define p_composant5 720
    #define p_composant6 630
     
    int techno15(int t)
    {
       int recherche;
     
       recherche = ( (t * 2) + (t / 2) );
       return recherche;
    }
     
    int techno1x(int s, int r)
    {
        int u;
     
        u = (  (s * 10 / 100) + r);
        return u;
    }
     
    int solve (int const o, int const m, int const h)
    {
       int att, a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       printf("Entrez la puissance d'attaque du vaisseau en hangars :\n");
       scanf("%d", &att);
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * o + b * m == h)
             {
                 if ( att == h)
                 {
                     /* Calculs des augmentations de puissance avec les technologies */
                     reponse1 = techno15(h);
                     reponse2 = techno1x(h, reponse1);
                     reponse3 = techno1x(h, reponse2);
                     reponse4 = techno1x(h, reponse3);
                     reponse5 = techno1x(h, reponse4);
                     reponse6 = techno1x(h, reponse5);
                     reponse7 = techno1x(h, reponse6);
     
                     printf("\n\n");
                     printf ("Pour Lanceur de drone = %d et bombe nakuadria = %d : \n",a, b);
                     printf("\nL'attaque au level 15 est de %d. \n", reponse1);
                     printf("\nL'attaque au level 16 est de %d. \n", reponse2);
                     printf("\nL'attaque au level 17 est de %d. \n", reponse3);
                     printf("\nL'attaque au level 18 est de %d. \n", reponse4);
                     printf("\nL'attaque au level 19 est de %d. \n", reponse5);
                     printf("\nL'attaque au level 20 est de %d. \n", reponse6);
                     printf("\nL'attaque au level 21 est de %d. \n", reponse7);
                 }
                 else
                 {
                     ;
                 }
             }
          }
       }
       return 0;
    }
     
    int solva (int const c, int const d, int const n)
    {
       int bou, a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       printf("Entrez la puissance des bouclier du vaisseau en hangars :\n");
       scanf("%d", &bou);
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * c + b * d == n)
             {
                 if ( bou == n)
                 {
                     /* Calculs des augmentations de puissance avec les technologies */
                     reponse1 = techno15(n);
                     reponse2 = techno1x(n, reponse1);
                     reponse3 = techno1x(n, reponse2);
                     reponse4 = techno1x(n, reponse3);
                     reponse5 = techno1x(n, reponse4);
                     reponse6 = techno1x(n, reponse5);
                     reponse7 = techno1x(n, reponse6);
     
                     printf("\n\n");
                     printf ("Pour super bouclier atlantis = %d et bouclier atlantis= %d : \n",a, b);
                     printf("\nLa puissance de bouclier au level 15 est de %d. \n", reponse1);
                     printf("\nLa puissance de bouclier au level 16 est de %d. \n", reponse2);
                     printf("\nLa puissance de bouclier au level 17 est de %d. \n", reponse3);
                     printf("\nLa puissance de bouclier au level 18 est de %d. \n", reponse4);
                     printf("\nLa puissance de bouclier au level 19 est de %d. \n", reponse5);
                     printf("\nLa puissance de bouclier au level 20 est de %d. \n", reponse6);
                     printf("\nLa puissance de bouclier au level 21 est de %d. \n", reponse7);
                 }
                 else
                 {
                     ;
                 }
             }
          }
       }
       return 0;
    }
     
    int solvo (int const z, int const y, int const x)
    {
       int coq, a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       printf("Entrez la puissance de coque du vaisseau en hangars  :\n");
       scanf("%d", &coq);
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * z + b * y == x)
             {
                if ( coq == x)
                {
     
                    reponse1 = techno15(x);
                    reponse2 = techno1x(x, reponse1);
                    reponse3 = techno1x(x, reponse2);
                    reponse4 = techno1x(x, reponse3);
                    reponse5 = techno1x(x, reponse4);
                    reponse6 = techno1x(x, reponse5);
                    reponse7 = techno1x(x, reponse6);
     
                    printf("\n\n");
                    printf ("Pour coque lantienne renforce = %d et coque lantienne = %d : \n",a, b);
                    printf("\nLa puissance de coque au level 15 est de %d. \n", reponse1);
                    printf("\nLa puissance de coque au level 16 est de %d. \n", reponse2);
                    printf("\nLa puissance de coque au level 17 est de %d. \n", reponse3);
                    printf("\nLa puissance de coque au level 18 est de %d. \n", reponse4);
                    printf("\nLa puissance de coque au level 19 est de %d. \n", reponse5);
                    printf("\nLa puissance de coque au level 20 est de %d. \n", reponse6);
                    printf("\nLa puissance de coque au level 21 est de %d. \n", reponse7);
                }
                else
                {
                    ;
                }
             }
          }
       }
       return 0;
    }
     
    int main (void)
    {
       int n1, n2, n3;
     
       for (n1 = 1; n1 < 10000000; n1++)
       {
          solve (p_composant1, p_composant4, n1);
       }
       for (n2 = 1; n2 < 10000000; n2++)
       {
          solva (p_composant2, p_composant6, n2);
       }
     
       for (n3 = 1; n3 < 10000000; n3++)
       {
          solvo (p_composant3, p_composant5, n3);
       }
       return 0;
    }

    merci par d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le problème vient uniquement des conditions très restrictives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             if (a * o + b * m == h)
             {
                 if ( att == h)
    On a o = 1 500 000, m = 3000, et en plus, il faut entrer la même valeur que h.

    Par exemple, si on tape 3000, il faudra attendre que la boucle de main arrive à 3000 (et entrer 3000 fois 3000 au clavier) pour entrer dans ces if. Et 3000 est la plus petite valeur qui marche !!!

    Il y a certainement une erreur de conception dans ce programme

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    le problème c'est que je vais sans doute integré des "composant" au progamme qui possede une valeur de moins de 3000.

    sinon pouvez me donner comment creer une meilleur conception de ce programme???

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Non, je ne sais pas ce que tu veux faire ni ce que représentent tous ces paramètres. Il faut que tu réfléchisses aux valeurs qu'ils peuvent logiquement prendre dans ton programme et à la validité de tes tests.

    Désolé

  5. #5
    Invité de passage
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main (void)
    {
       int n1, n2, n3;
     
       for (n1 = 1; n1 < 10000000; n1++)
       {
          solve (p_composant1, p_composant4, n1);
       }
    tu as bouclé 10000000 la fonction 'solve' qui va afficher le message:
    printf("Entrez la puissance d'attaque du vaisseau en hangars :\n");

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    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
    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
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    #include <stdio.h>
     
    #define p_composant1 1500000
    #define p_composant2 850000
    #define p_composant3 1700000
    #define p_composant4 3000
    #define p_composant5 720
    #define p_composant6 630
     
    int techno15 (int t);
    int techno1x (int s, int r);
    int solve (int const o, int const m, int const h, int const atq);
    int solva (int const c, int const d, int const n, int const boc);
    int solvo (int const z, int const y, int const x, int const coc);
     
     
    int main (void)
    {
       int att, bou, coq, n1, n2, n3;
     
       printf("Entrez la puissance d'attaque du vaisseau en hangars :\n");
       scanf("%d", &att);
       printf("Entrez la puissance des bouclier du vaisseau en hangars :\n");
       scanf("%d", &bou);
       printf("Entrez la puissance de coque du vaisseau en hangars  :\n");
       scanf("%d", &coq);
     
       for (n1 = 1; n1 < 10000000; n1++)
       {
          solve (p_composant1, p_composant4, n1, att);
       }
       for (n2 = 1; n2 < 10000000; n2++)
       {
          solva (p_composant2, p_composant6, n2, bou);
       }
     
       for (n3 = 1; n3 < 10000000; n3++)
       {
          solvo (p_composant3, p_composant5, n3, coq);
       }
       return 0;
    }
     
    int techno15(int t)
    {
       int recherche;
     
       recherche = ( (t * 2) + (t / 2) );
       return recherche;
    }
     
    int techno1x(int s, int r)
    {
        int u;
     
        u = (  (s * 10 / 100) + r);
        return u;
    }
     
    int solve (int const o, int const m, int const h, int const atq)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * o + b * m == h)
             {
                 if ( atq == h)
                 {
                     /* Calculs des augmentations de puissance avec les technologies */
                     reponse1 = techno15(h);
                     reponse2 = techno1x(h, reponse1);
                     reponse3 = techno1x(h, reponse2);
                     reponse4 = techno1x(h, reponse3);
                     reponse5 = techno1x(h, reponse4);
                     reponse6 = techno1x(h, reponse5);
                     reponse7 = techno1x(h, reponse6);
     
                     printf("\n\n");
                     printf ("Pour Lanceur de drone = %d et bombe nakuadria = %d : \n",a, b);
                     printf("\nL'attaque au level 15 est de %d. \n", reponse1);
                     printf("\nL'attaque au level 16 est de %d. \n", reponse2);
                     printf("\nL'attaque au level 17 est de %d. \n", reponse3);
                     printf("\nL'attaque au level 18 est de %d. \n", reponse4);
                     printf("\nL'attaque au level 19 est de %d. \n", reponse5);
                     printf("\nL'attaque au level 20 est de %d. \n", reponse6);
                     printf("\nL'attaque au level 21 est de %d. \n", reponse7);
                 }
                 else
                 {
                     continue;
                 }
             }
          }
       }
       return 0;
    }
     
    int solva (int const c, int const d, int const n, int const boc)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * c + b * d == n)
             {
                 if ( boc == n)
                 {
                     /* Calculs des augmentations de puissance avec les technologies */
                     reponse1 = techno15(n);
                     reponse2 = techno1x(n, reponse1);
                     reponse3 = techno1x(n, reponse2);
                     reponse4 = techno1x(n, reponse3);
                     reponse5 = techno1x(n, reponse4);
                     reponse6 = techno1x(n, reponse5);
                     reponse7 = techno1x(n, reponse6);
     
                     printf("\n\n");
                     printf ("Pour super bouclier atlantis = %d et bouclier atlantis= %d : \n",a, b);
                     printf("\nLa puissance de bouclier au level 15 est de %d. \n", reponse1);
                     printf("\nLa puissance de bouclier au level 16 est de %d. \n", reponse2);
                     printf("\nLa puissance de bouclier au level 17 est de %d. \n", reponse3);
                     printf("\nLa puissance de bouclier au level 18 est de %d. \n", reponse4);
                     printf("\nLa puissance de bouclier au level 19 est de %d. \n", reponse5);
                     printf("\nLa puissance de bouclier au level 20 est de %d. \n", reponse6);
                     printf("\nLa puissance de bouclier au level 21 est de %d. \n", reponse7);
                 }
                 else
                 {
                     continue;
                 }
             }
          }
       }
       return 0;
    }
     
    int solvo (int const z, int const y, int const x, int const coc)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * z + b * y == x)
             {
                if ( coc == x)
                {
                    /* Calculs des augmentations de puissance avec les technologies */
                    reponse1 = techno15(x);
                    reponse2 = techno1x(x, reponse1);
                    reponse3 = techno1x(x, reponse2);
                    reponse4 = techno1x(x, reponse3);
                    reponse5 = techno1x(x, reponse4);
                    reponse6 = techno1x(x, reponse5);
                    reponse7 = techno1x(x, reponse6);
     
                    printf("\n\n");
                    printf ("Pour coque lantienne renforce = %d et coque lantienne = %d : \n",a, b);
                    printf("\nLa puissance de coque au level 15 est de %d. \n", reponse1);
                    printf("\nLa puissance de coque au level 16 est de %d. \n", reponse2);
                    printf("\nLa puissance de coque au level 17 est de %d. \n", reponse3);
                    printf("\nLa puissance de coque au level 18 est de %d. \n", reponse4);
                    printf("\nLa puissance de coque au level 19 est de %d. \n", reponse5);
                    printf("\nLa puissance de coque au level 20 est de %d. \n", reponse6);
                    printf("\nLa puissance de coque au level 21 est de %d. \n", reponse7);
                }
                else
                {
                    continue;
                }
             }
          }
       }
       return 0;
    }
    j'ai trouvé la solution si dessus mais mon programme n'arrive a traité toutes les donnés comme par exmple il ne passe pas a la fonction solva et solvo après fait solve n'arrive pas a calculer de grande equations même rien qu'un p-composant1 mais j'ai remarqué que si j'augmente le nombre dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       for (n1 = 1; n1 < 10000000; n1++)
    par exmple 10000000 on rempace par 20000000
    on obtient de meilleur resultat mais il y a une limite à ce nombre j'ai alors pensé a un tableau à plusieur dimentions mais je ne sais pas comment procéder dans mon programme pouvez vous m'aider s'il vous plaît???

    et sinon me donner d'autre solutions...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Et bien en faites il fonctionne
    mais il y a un probléme : il est beaucoups trop long il lui faut 20 min pour me repondre les premières solutions

    Y a t'il un moyen de faire en sorte de le rendre plus rapide

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    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
       for (n1 = 1; n1 < 10000000; n1++)
       {
          solve (p_composant1, p_composant4, n1, att);
       }
    ....
    int solve (int const o, int const m, int const h, int const atq)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
       {
          for (b = 0; b < 51; b++)
          {
             if (a * o + b * m == h)
             {
                 if ( atq == h)
                 {
                     /* Calculs des augmentations de puissance avec les technologies */
    ....
                 }
             }
          }
       }
       return 0;
    }
    Si les paramètres atq et h sont différents, solve ne fait rien et il est inutile de faire la double boucle. Comme ce sont deux paramètres de la fonction, ils peuvent être testés avant l'appel :
    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
       for (n1 = 1; n1 < 10000000; n1++)
       {
         if(n1 == att) solve (p_composant1, p_composant4, n1, att);
       }
    ....
    int solve (int const o, int const m, int const h, int const atq)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
          for (b = 0; b < 51; b++)
             if (a * o + b * m == h)
             {
                     /* Calculs des augmentations de puissance avec les technologies */
    ....
             }
       return 0;
    }
    Comme ça ne peut marcher que si n1 vaut att, la boucle for(n1...) est inutile et on peut supprimer un paramètre à la fonction :
    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
     
     solve (p_composant1, p_composant4, att);
    ....
    int solve (int const o, int const m, int const h)
    {
       int a, b, reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, reponse7;
     
       for (a = 0; a < 51; a++)
          for (b = 0; b < 51; b++)
             if (a * o + b * m == h)
             {
                     /* Calculs des augmentations de puissance avec les technologies */
    ....
             }
       return 0;
    }
    Idem pour solva et solvo
    Ca devrait aller un peu plus vite !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    merci j'essairais tout ça

Discussions similaires

  1. pb de memoire ou erreur de programmation?
    Par nina2007 dans le forum Linux
    Réponses: 14
    Dernier message: 14/08/2007, 07h28
  2. Erreur de programmation d'un DTS
    Par ninsekh dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 13/08/2007, 22h08
  3. erreur de programme
    Par acik59 dans le forum C
    Réponses: 7
    Dernier message: 16/05/2007, 12h40
  4. erreur dans programme java sur des vecteurs 3D
    Par HighSchool2005 dans le forum Langage
    Réponses: 18
    Dernier message: 15/02/2007, 16h38
  5. erreur compilation programme
    Par auxisteff dans le forum C
    Réponses: 8
    Dernier message: 09/02/2007, 21h27

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