Retrouver une variable dans le programme

Résolu/Fermé
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 - 15 oct. 2015 à 00:45
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 - 15 oct. 2015 à 19:03
Bonjour,
Je ne sais pas si le titre est bien clair, mais j'aimerais savoir comment faire pour que le programme aille chercher une variable énoncée dans une condition if (j'ai marqué "si tel est comme ceci cette variable est comme ça" mais le correcteur m'affirme plus loin dans le programme que la variable en question n'a pas été déclarée. Je ne peux pas la re-déclarer parce que son résultat résulte d'une multitude d'opérations qui diffèrent suivant les conditions, existe-t-il un moyen de dire à l'ordinateur d'aller chercher sur le disc dure cette fameuse variable et la faire réapparaitre à l'ordre du jour, sachant que tout mon programme tiens dans la fonction main. (je suis un gros débutant)
j'utilise code::blocks

2 réponses

mtR^ Messages postés 1211 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 3 juin 2023 169
15 oct. 2015 à 11:37
Salut,

Peux tu donner le code ?
0
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 68
Modifié par Whismeril le 15/10/2015 à 13:09
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
    int Boucle = 0;
    char Personage = 0;
    int BBA = 0;
    int CA = 0;
    int NbDe = 0;
    int TypeDe = 0;
    int Bonus = 0;
    int CritiqueDe = 0;
    int Critiquex = 0;
    int De = 0;
             const int MAX = 20, MIN = 1;
             srand(time(NULL));
             De = (rand() % (MAX - MIN + 1)) + MIN;

    printf ("\t\t\t===Pathfinder===\n\n\n");

    printf ("\t\t\t===Personages===\n\n\n");

    char Personage1[100];
    int INI1 = 0, PV1 = 0, CA1 = 0, BMO1 = 0, DMD1 = 0;
    char Arme1o1[100], Arme1o2[100];
    int BBA1o1 = 0, NbDe1o1 = 0, TypeDe1o1 = 0, Bonus1o1 = 0, CritiqueDe1o1 = 0, Critiquex1o1 = 0;
    int BBA1o2 = 0, NbDe1o2 = 0, TypeDe1o2 = 0, Bonus1o2 = 0, CritiqueDe1o2 = 0, Critiquex1o2 = 0;

    char Personage2[100];
    int PV2 = 0, INI2 = 0, CA2 = 0, BMO2 = 0, DMD2 = 0;
    char Arme2o1[100], Arme2o2[100];
    int BBA2o1 = 0, NbDe2o1 = 0, TypeDe2o1 = 0, Bonus2o1 = 0, CritiqueDe2o1 = 0, Critiquex2o1 = 0;
    int BBA2o2 = 0, NbDe2o2 = 0, TypeDe2o2 = 0, Bonus2o2 = 0, CritiqueDe2o2 = 0, Critiquex2o2 = 0;

    int Continue = 0;

    char Personage3[100];
    int PV3 = 0, INI3 = 0, CA3 = 0, BMO3 = 0, DMD3 = 0;
    char Arme3o1[100], Arme3o2[100];
    int BBA3o1 = 0, NbDe3o1 = 0, TypeDe3o1 = 0, Bonus3o1 = 0, CritiqueDe3o1 = 0, Critiquex3o1 = 0;
    int BBA3o2 = 0, NbDe3o2 = 0, TypeDe3o2 = 0, Bonus3o2 = 0, CritiqueDe3o2 = 0, Critiquex3o2 = 0;

    char Personage4[100];
    int PV4 = 0, INI4 = 0, CA4 = 0, BMO4 = 0, DMD4 = 0;
    char Arme4o1[100], Arme4o2[100];
    int BBA4o1 = 0, NbDe4o1 = 0, TypeDe4o1 = 0, Bonus4o1 = 0, CritiqueDe4o1 = 0, Critiquex4o1 = 0;
    int BBA4o2 = 0, NbDe4o2 = 0, TypeDe4o2 = 0, Bonus4o2 = 0, CritiqueDe4o2 = 0, Critiquex4o2 = 0;




//1)
    printf("\n\n\nPersonage 1\n\n");
    scanf("%s", Personage1);
    printf("\nInitiative\n");
    scanf("%d", &INI1);
    int Initiative1 = 0;
        srand(time(NULL));
        Initiative1 = 1+rand() % (20 + 1);
    int Passage1 = Initiative1 + INI1;
    char Case4 = Personage1;
    printf("\nPV\n");
    scanf("%d", &PV1);
    printf("\nBBA (Bonus de Base a l'Attaque)\n");
    scanf("%d", &CA1);
    printf("\nBMO (Bonus de Manoeuvre Offensive)\n");
    scanf("%d", &BMO1);
    printf("\nDMD (Bonus de Manoeuvre Defensive)\n");
    scanf("%d",& DMD1);
    printf("\nArme 1\n");
    scanf("%s", Arme1o1);
    scanf("\n\n%d", &NbDe1o1);
    printf ("d");
    scanf("%d", &TypeDe1o1);
    printf ("+");
    scanf("%d", &Bonus1o1);
    printf("\nArme 2\n");
    scanf("%s", Arme1o2);
    scanf("\n\n%d", &NbDe1o2);
    printf ("d");
    scanf("%d", &TypeDe1o2);
    printf ("+");
    scanf("%d", &Bonus1o2);

//2)
    printf("\n\n\nPersonage 2\n\n");
    scanf("%s", Personage2);
    printf("\nInitiative\n");
    scanf("%d", &INI2);
    int Initiative2 = 0;
        srand(time(NULL));
        Initiative2 = 1+rand() % (20 + 1);
    int Passage2o1 = Initiative2 + INI2 - Passage1;
    int Passage2o2 = Passage1 - Initiative2 + INI2;
    if (Passage2o1 > Passage2o2)
    {
        char Case3 = Personage2;
        int Passage2 = Passage2o1;
    }
    else
    {
        char Case4 = Personage2, Case3 = Personage1;
        int Passage2 = Passage2o2;
    }
    printf("\nPV\n");
    scanf("%d", &PV2);
    printf("\nBBA (Bonus de Base a l'Attaque)\n");
    scanf("%d", &CA2);
    printf("\nBMO (Bonus de Manoeuvre Offensive)\n");
    scanf("%d", &BMO2);
    printf("\nDMD (Bonus de Manoeuvre Defensive)\n");
    scanf("%d",& DMD2);
    printf("\nArme 1\n");
    scanf("%s", Arme2o1);
    scanf("\n\n%d", &NbDe2o1);
    printf ("d");
    scanf("%d", &TypeDe2o1);
    printf ("+");
    scanf("%d", &Bonus2o1);
    printf("\nArme 2\n");
    scanf("%s", Arme2o2);
    scanf("\n\n%d", &NbDe2o2);
    printf ("d");
    scanf("%d", &TypeDe2o2);
    printf ("+");
    scanf("%d", &Bonus2o2);

    printf("\nContinue?\n1. Oui\n2. Non\n\n");
    scanf("%d", &Continue);

//3)
    if (Continue == 1)
    {
    printf("\n\n\nPersonage 3\n\n");
    scanf("%s", Personage3);
    printf("\nInitiative\n");
    scanf("%d", &INI3);
    int Initiative3 = 0;
        srand(time(NULL));
        Initiative3 = 1+rand() % (20 + 1);
    int Passage3o1 = Initiative3 + INI3 - Passage2;
    int Passage3o2 = Passage2 - Initiative3 + INI3;
    if (Passage3o1 > Passage3o2)
    {
        char Case2 = Personage3;
        int Passage3 = Passage3o1;
    }
    else
    {
        char Case3 = Personage3, Case2 = Personage2;
        int Passage3 = Passage3o2;
    }
    printf("\nPV\n");
    scanf("%d", &PV3);
    printf("\nBBA (Bonus de Base a l'Attaque)\n");
    scanf("%d", &CA3);
    printf("\nBMO (Bonus de Manoeuvre Offensive)\n");
    scanf("%d", &BMO3);
    printf("\nDMD (Bonus de Manoeuvre Defensive)\n");
    scanf("%d",& DMD3);
    printf("\nArme 1\n");
    scanf("%s", Arme3o1);
    scanf("\n\n%d", &NbDe3o1);
    printf ("d");
    scanf("%d", &TypeDe3o1);
    printf ("+");
    scanf("%d", &Bonus3o1);
    printf("\nArme 2\n");
    scanf("%s", Arme3o2);
    scanf("\n\n%d", &NbDe3o2);
    printf ("d");
    scanf("%d", &TypeDe3o2);
    printf ("+");
    scanf("%d", &Bonus3o2);

    printf("\nContinue?\n1. Oui\n2. Non\n\n");
    scanf("%d", &Continue);
    }

//4)
    if (Continue == 1)
    {
    printf("\n\n\nPersonage 4\n\n");
    scanf("%s", Personage3);
    printf("\nInitiative\n");
    scanf("%d", &INI3);
    int Initiative4 = 0;
        srand(time(NULL));
        Initiative4 = 1+rand() % (20 + 1);
    int Passage4o1 = Initiative4 + INI4 - Passage3;
    int Passage4o2 = Passage3 - Initiative4 + INI4;
    if (Passage4o1 > Passage4o2)
    {
        char Case1 = Personage4;
        int Passage4 = Passage4o1;
    }
    else
    {
        char Case2 = Personage4, Case3 = Personage3;
        int Passage4 = Passage4o2;
    }
    printf("\nPV\n");
    scanf("%d", &PV3);
    printf("\nBBA (Bonus de Base a l'Attaque)\n");
    scanf("%d", &CA3);
    printf("\nBMO (Bonus de Manoeuvre Offensive)\n");
    scanf("%d", &BMO3);
    printf("\nDMD (Bonus de Manoeuvre Defensive)\n");
    scanf("%d",& DMD3);
    printf("\nArme 1\n");
    scanf("%s", Arme4o1);
    scanf("\n\n%d", &NbDe4o1);
    printf ("d");
    scanf("%d", &TypeDe4o1);
    printf ("+");
    scanf("%d", &Bonus4o1);
    printf("\nArme 2\n");
    scanf("%s", Arme4o2);
    scanf("\n\n%d", &NbDe4o2);
    printf ("d");
    scanf("%d", &TypeDe4o2);
    printf ("+");
    scanf("%d", &Bonus4o2);

    printf("\nContinue?\n1. Oui\n2. Non\n\n");
    scanf("%d", &Continue);
    }


    printf ("\t\t\t===Pathfinder===\n\n\n");
    printf ("\t\t\t===Combat===\n\n\n");
    printf("\n1.%s", Case1);
    printf("\n2.%s", Case2);
    printf("\n3.%s", Case3);
    printf("\n4.%s", Case4);


_________________________________________

problème avec Passage et Case
0
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
0
mtR^ Messages postés 1211 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 3 juin 2023 169
15 oct. 2015 à 13:32
OK donc si j'ai bien compris, tu déclare par exemple ceci :

    if (Passage2o1 > Passage2o2)
{
char Case3 = Personage2;
int Passage2 = Passage2o1;
}


Et tu souhaiterais réutiliser Case3 ou Passage2 dans la suite du programme ? C'est normal qu'il te dise qu'elles ne sont pas déclarées, car si effectivement la condition n'est pas remplie, elles ne seront pas déclarées.

Il faut que tu déclare la variable avant, or du if. En gros, dis toi que si tu déclare une variable dans un if, tu ne pourra l'utiliser que dans ce if.
0
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 68
Modifié par lmc-3 le 15/10/2015 à 13:42
C'était ma question.
Et il n'y a AUCUNE solution?
parce que quelque soit la manoeuvre la variable sera déclarée en fait

et si je demande à aller chercher directement la valeur stockée dans le disc?
0
mtR^ Messages postés 1211 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 3 juin 2023 169 > lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024
15 oct. 2015 à 14:15
Si il y a une solution, comme je l'ai dit, l faut que tu déclare la variable avant, or du if. Quel est le problème avec ça ?
0
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 68
15 oct. 2015 à 18:50
J'ai compris, j'annonce (par exemple en début de programme) la variable comme étant (par exemple) égale à zéro puis je lui donne la valeur que je veux dans mes conditions plus loin dans le programme.

C'est ça?
0
mtR^ Messages postés 1211 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 3 juin 2023 169
15 oct. 2015 à 18:50
Exactement :)
0
lmc-3 Messages postés 597 Date d'inscription samedi 13 juin 2015 Statut Membre Dernière intervention 30 septembre 2024 68
15 oct. 2015 à 19:03
Merci
0