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 :

Problème boucle switch()


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Problème boucle switch()
    Bonjour,

    Je poste ce message car j'ai un problème dans une boucle switch que je n'arrive pas à résoudre: le programme n'affiche rien.
    Les fonctions sont correctes puisqu'elles marchent en dehors de la boucle.
    Le message dans le terminal est le suivant: "Process returned -1073741571 (0xC00000FD)".

    Merci de votre aide,
    Cordialement.

    Le code est le suivant:
    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
     int main()
    {
        int menu;
        int taille1;
        double Tableau1[taille1];
        int taille2;
        double Tableau2[taille2];
        int taille3;
        double Tableau3[taille3];
        int taille4;
        double Tableau4[taille4];
     
        do
        {
            cout<<endl<<" ----------------------- MENU -----------------------"<<endl<<endl;
            cout<<"1. Creation et trie d'un tableau croissant. "<<endl;
            cout<<"2. Creation et trie d'un tableau decroissant. "<<endl;
            cout<<"3. Creation et trie d'un tableau Random. "<<endl;
            cout<<"4. Creation et trie d'un tableau de votre choix. "<<endl;
            cin>>menu;
     
            switch(menu)
            {
                case 0 :
                break;
     
                case 1 :
                    cout <<"Pour commencer, nous allons creer un tableau dont les elements sont dans l'odre croissant. " << endl;
                    cout <<"Veuillez entrer la taille de votre tableau :  " << endl;
                    cin >> taille1;
                    CreationTableauCroissant(Tableau1,taille1);
                    cout <<"Voici votre tableau :" << endl;
                    AffichageTableau(Tableau1,taille1);
                    TriABulles(Tableau1,taille1);
                    cout <<"Voici votre tableau trie :" << endl;
                    AffichageTableau(Tableau1,taille1);
                    cout <<"Il s'agit du meme tableau, vous pouvez verifier ! " << endl;
                    cout <<"La verification automatique peut confirmer qu'il est bien trie dans l'ordre croissant : " << endl;
                    VerificationAuto(Tableau1,taille1);
                break;
     
                case 2 :
                    cout <<"Ensuite, nous allons creer un tableau dont les elements sont dans l'odre decroissant. " << endl;
                    cout <<"Veuillez entrer la taille de votre tableau :  " << endl;
                    cin >> taille2;
                    CreationTableauDeroissant(Tableau2,taille2);
                    cout <<"Voici votre tableau :" << endl;
                    AffichageTableau(Tableau2,taille2);
                    TriABulles(Tableau2,taille2);
                    cout <<"Voici votre tableau trie :" << endl;
                    AffichageTableau(Tableau2,taille2);
                    cout <<"Cette fois, il s'agit de votre tableau dans le sens inverse, vous pouvez verifier ! " << endl;
                    cout <<"La verification automatique peut confirmer qu'il est bien trie dans l'ordre croissant : " << endl;
                    VerificationAuto(Tableau2,taille2);
                break;
     
                case 3 :
                    cout <<"Maintenant, nous allons creer un tableau dont les elements sont choisi aleatoirement. " << endl;
                    cout <<"Veuillez entrer la taille de votre tableau :  " << endl;
                    cin >> taille3;
                    CreationTableauRandom(Tableau3,taille3);
                    TriABulles(Tableau3,taille3);
                    cout <<"Voici votre tableau trie :" << endl;
                    AffichageTableau(Tableau3,taille3);
                    cout <<"Le tableau est bien trie dans l'odre croissant, vous pouvez verifier ! " << endl;
                    cout <<"La verification automatique peut confirmer qu'il est bien trie dans l'ordre croissant : " << endl;
                    VerificationAuto(Tableau3,taille3);
                break;
     
                case 4 :
                    cout <<"Finalement, creez votre propre tableau ! " << endl;
                    cout <<"Veuillez entrer la taille de votre tableau :  " << endl;
                    cin >> taille4;
                    CreationTableau(Tableau4,taille4);
                    cout <<"Voici votre tableau :" << endl;
                    AffichageTableau(Tableau4,taille4);
                    TriABulles(Tableau4,taille4);
                    cout <<"Voici votre tableau trie :" << endl;
                    AffichageTableau(Tableau4,taille4);
                    cout <<"Le tableau est bien trie dans l'odre croissant, vous pouvez verifier ! " << endl;
                    cout <<"La verification automatique peut confirmer qu'il est bien trie dans l'ordre croissant : " << endl;
                    VerificationAuto(Tableau4,taille4);
                break;
     
                default :
                    cout <<"Rentrez une instruction valide ! " << endl;
                break;
            }
     
        }while (menu!=0);
     
     
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    - une boucle switch n'existe pas
    - les boucles sont for, while, do while; switch n'a rien à voir
    - taille1,2,3,4 sont pas initialisées
    - Tableau1,2,3,4 sont des VLA strictement interdits en C++ et dont la taille serait de toute façon inconnue puisque non initialisée
    - utiliser cout et cin n'en fait pas un code C++, ton code est du C
    - main retourne rien
    - tu prétendes que les fonctions marchent, mais rien ne le prouve
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Tout d'abord, bonjour.

    Qu'entendez vous par "initialisées" ? Les tailles sont au début du main (int taille1, int taille2,...).
    Les fonctions marchent puisque j'ai exactement le même programme n'utilisant pas le switch().
    Dans tout les cas, je suis débutant en programmation mais pourtant très intéressé. Faire un listing des problèmes au lieu d'expliquer pourquoi se sont justement des problème n'est pas vraiment formateur.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Bonjour,

    Par exemple ligne 4 il y a "int taille1;" qui indique que taille1 est un nombre entier, et ligne 5 juste après il y a "double Tableau1[taille1];"

    Combien de nombres en double précision y-a-t-il dans Tableau1 ? Quelle est la valeur de taille1 ? 2, 5000, -12 ? Le compilateur ne peut pas le savoir si la variable n'est pas initialisée avec une valeur.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par xdelatour Voir le message
    Bonjour,

    Par exemple ligne 4 il y a "int taille1;" qui indique que taille1 est un nombre entier, et ligne 5 juste après il y a "double Tableau1[taille1];"

    Combien de nombres en double précision y-a-t-il dans Tableau1 ? Quelle est la valeur de taille1 ? 2, 5000, -12 ? Le compilateur ne peut pas le savoir si la variable n'est pas initialisée avec une valeur.
    Bonjour,

    Je vous remercie de votre réponse. Cette indication résout mon problème. J'aurais cependant quelques questions.
    Le problème est que j'ai créé le tableau sans avoir initialisé sa taille (problème résolu en mettant simplement int taille1=0. Mais est-il possible de procéder comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int taille1;
    cin >> taille1;
    double Tableau1[taille1];
    CreationTableau(Tableau1,taille1);
    Cordialement.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Les tableaux en C++ s'appellent std::vector ou std::array.
    https://cpp.developpez.com/faq/cpp/?...vec-std-vector

    Ou, pour les besoins d'un cours pour utiliser l'allocation dynamique
    https://cpp.developpez.com/faq/cpp/?...ent-un-tableau

    Si tu souhaites faire du C, fais du C pour de vrai, avec printf et scanf et c'est le forum à côté.
    Mettre cin et cout ne transforme pas un code C en code C++.
    Les VLA sont strictement interdits en C++ et tout juste autorisés avec une version spécifique du C.

    Pi un tableau de taille 0... ça n'a aucun sens
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Le mieux est de consulter les tutoriels sur le site et d'assimiler les bases du langage avant de se lancer dans l'écriture du code. Par exemple ici pour la définition des variables.

    A ma connaissance (mais je connais davantage le C que le C++), un tableau doit être défini avec une taille connue au moment de la compilation justement pour que celui-ci sache combien d'espace réserver en mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème boucle switch
    Par Invité dans le forum Langage
    Réponses: 14
    Dernier message: 16/09/2014, 17h04
  2. [1.x] Probléme avec l'utilisation de la boucle switch
    Par farhaenis dans le forum Symfony
    Réponses: 9
    Dernier message: 03/03/2011, 16h56
  3. Problème de boucle Switch Case
    Par mLk92 dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2007, 17h20
  4. [Cookies] problème de switch
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 28/12/2005, 02h35
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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