Partage
  • Partager sur Facebook
  • Partager sur Twitter

Debug Assertion Failed! | Visual Studio 2017

Expression: vector subscript out of range

Sujet résolu
Anonyme
    16 janvier 2019 à 22:09:29

    Bonjour,

    Je rencontre un problème dans mon code :

    Ce n'est pas une erreur mais un popup qui s'affiche sur Visual Studio 2017 :

    Le code marche une fois sur 3, je ne sais pour quel raison !

    Voici le code :

    #include "pch.h"
    #include "motAleatoire.h"
    #include "autres.h"
    #include <iostream>
    #include <string>
    #include <random>
    #include <fstream>
    #include <vector>
    
    std::string mot_Deviner(bool modeJeu, int difficulte)
    {
    	std::string motFichier{};
    	switch (difficulte)
    	{
    		case 1:	
    				motFichier = "motTfacile.txt" ;
    			break;
    		case 2:
    				motFichier = "motFacile.txt";
    			break;
    		case 3:
    				motFichier = "motMoyen.txt";
    			break;
    		case 4:
    				motFichier = "motDifficile.txt" ;
    			break;
    		case 5:
    				motFichier = "motTdifficile.txt" ;
    				break;
    		default:
    				erreur();
    			break;
    	}
    
    	std::string motDeviner; 
    	if (modeJeu)
    	{
    
    		std::random_device generator{};
    
    
    
    		std::ifstream fichier(motFichier);
    
    		std::string ligne, motHasard;
    		int nombre(0);
    
    		std::vector<std::string> tableau(0);
    
    		if (fichier) {
    			while (getline(fichier, ligne)) {
    				tableau.push_back(ligne);
    			}
    			std::uniform_int_distribution<int> dist(0, tableau.size());
    			nombre = dist(generator);
    
    		}
    		else {
    			erreur();
    		}
    
    		return tableau[nombre];
    
    	}
    	else
    	{
    		std::cout << "==================================" << std::endl;
    		std::cout << "|           Joueur 1 :           |" << std::endl;
    		std::cout << "|                                |" << std::endl;
    		std::cout << "|    Marquer le mot a trouver    |" << std::endl;
    		std::cout << "|                                |" << std::endl;
    		std::cin >> motDeviner;
    		std::cout << "|                                |" << std::endl;
    		std::cout << "|        Mot enregistrer!        |" << std::endl;
    		std::cout << "==================================" << std::endl;
    
    	}
    	system("cls");
    	return motDeviner; //Retourne le mot
    }
    


    Merci de votre compréhension !

    Note : Aucune erreur n'est proscrite dans la sortie.

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2019 à 22:23:41

      Bonjour,

      En cliquant sur le bouton "Recommencer", et en regardant la pile des appels, tu auras la ligne où le dépassement a eu lieu.
      Sinon ligne 54, la distribution accepte un élément de trop. Il faut écrire :

         std::uniform_int_distribution<int> dist( 0, tableau.size()-1 );
      • Partager sur Facebook
      • Partager sur Twitter

      En recherche d'emploi.

      Anonyme
        17 janvier 2019 à 18:11:27

        Dalfab a écrit:

        Bonjour,

        En cliquant sur le bouton "Recommencer", et en regardant la pile des appels, tu auras la ligne où le dépassement a eu lieu.
        Sinon ligne 54, la distribution accepte un élément de trop. Il faut écrire :

           std::uniform_int_distribution<int> dist( 0, tableau.size()-1 );

        Merrciiii cela règle le problème !!!
        • Partager sur Facebook
        • Partager sur Twitter

        Debug Assertion Failed! | Visual Studio 2017

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown