C++ Problème de Crash

lolpuppy -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, quand je compile mon code, quand j'arrive a ma boucle la console crash. Je viens de penser a ajouter des guillemets dans ma fonction. Je compile avec Code::Blocks


Exemple : Avant
if (aleatoire == 1)
    {
        retour == (a);
        return retour;
    }


Après
if (aleatoire == 1)
    {
        retour == ("a");
        return retour;
    }


Mon main

#include "minuscule.h"
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    string type;
    int nbDeChar(0);


    cout << "Ceci est un generateur de mot de passe !" << endl;
    cout << "Comment voulez-vous votre mot de passe"<<endl<<"minuscule" <<endl<<"MAJUSCULE" << endl <<"Les Deux"<<endl;
    cin >>type;
    do
    {
    cout << "Combien de caractere votre mot de passe doit-it contenir ? (128 Max.)"<<endl ;
    cin >>nbDeChar;
    }while(nbDeChar > 128);
    string tableau[nbDeChar];
    for (int i(0);i < nbDeChar; i++)
    {
        tableau[i] = minuscule();
        cout<<tableau[i];
    }
    return 0;
}


ma fonction minuscule
#include "minuscule.h"
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <vector>

std::string minuscule()
{
    int aleatoire(0);
    std::string retour;
    std::string a(a);
    std::string b(b);
    std::string c(c);
    std::string d(d);
    std::string e(e);
    std::string f(f);
    std::string g(g);
    std::string h(h);
    std::string i(i);
    std::string j(j);
    std::string k(k);
    std::string l(l);
    std::string m(m);
    std::string n(n);
    std::string o(o);
    std::string p(p);
    std::string q(q);
    std::string r(r);
    std::string s(s);
    std::string t(t);
    std::string u(u);
    std::string v(v);
    std::string w(w);
    std::string x(x);
    std::string y(y);
    std::string z(z);


    srand(time(NULL));
    aleatoire = (rand() % (26 - 1 + 1)) + 1;


    if (aleatoire == 1)
    {
        retour == (a);
        return retour;
    }
    else if (aleatoire == 2)
    {
        retour == (b);
        return b;
    }
    else if (aleatoire == 3)
    {
        retour == (c);
        return c;
    }
    else if (aleatoire == 4)
    {
        retour == (d);
        return d;
    }
    else if (aleatoire == 5)
    {
        retour == (e);
        return e;
    }
    else if (aleatoire == 6)
    {
        retour == (f);
        return f;
    }
    else if (aleatoire == 7)
    {
        retour == (g);
        return g;
    }
    else if (aleatoire == 8)
    {
        retour == (h);
        return h;
    }
    else if (aleatoire == 9)
    {
        retour == (i);
        return i;
    }
    else if (aleatoire == 10)
    {
        retour == (j);
        return j;
    }
    else if (aleatoire == 11)
    {
        retour == (k);
        return k;
    }
    else if (aleatoire == 12)
    {
        retour == (l);
        return l;
    }
    else if (aleatoire == 13)
    {
        retour == (m);
        return m;
    }
    else if (aleatoire == 14)
    {
        retour == (n);
        return n;
    }
    else if (aleatoire == 15)
    {
        retour == (o);
        return o;
    }
    else if (aleatoire == 16)
    {
        retour == (p);
        return p;
    }
    else if (aleatoire == 17)
    {
        retour == (q);
        return q;
    }
    else if (aleatoire == 18)
    {
        retour == (r);
        return r;
    }
    else if (aleatoire == 19)
    {
        retour == (s);
        return s;
    }
    else if (aleatoire == 20)
    {
        retour == (t);
        return t;
    }
    else if (aleatoire == 21)
    {
        retour == (u);
        return u;
    }
    else if (aleatoire == 22)
    {
        retour == (v);
        return v;
    }
    else if (aleatoire == 23)
    {
        retour == (w);
        return w;
    }
    else if (aleatoire == 24)
    {
        retour == (x);
        return x;
    }
    else if (aleatoire == 25)
    {
        retour == (y);
        return y;
    }
    else if (aleatoire == 26)
    {
        retour == (z);
        return z;
    }

}


Mon .h
#ifndef MINUSCULE_H_INCLUDED
#define MINUSCULE_H_INCLUDED
#include <string>
std::string minuscule();

#endif // MINUSCULE_H_INCLUDED






1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
C'est exprès que tu as fait la méthode compliqué qui ne sert à rien ?

Voici comment faire en une ligne ta fonction minuscule :

char minuscule() { return 'a' + rand()%26; }

Pour ce qui est des erreurs dans le main, je te laisse directement regarder mon code, c'est pas tout à fait comme toi, mais ça fait la même chose :

#include <iostream>   

using namespace std;   

inline char aleaSet(const char start,const char end)   
{   
    return start + rand()%(end-start+1);   
}   

int main()   
{   
    cout << "Ceci est un generateur de mot de passe !" << endl << endl;   
    cout << "Comment voulez-vous votre mot de passe" << endl;   
       
    int type;   
    do   
    {   
        cout<< "1: minuscule" << endl   
            << "2: MAJUSCULE" << endl   
            << "3: Les Deux" << endl;   
        cin >> type;   
    }   
    while (type<1 && type>3);   
       
    int nbDeChar;   
    do   
    {   
        cout << "Combien de caracteres votre mot de passe doit-il contenir ?" << endl;   
        cin >> nbDeChar;   
    }   
    while (nbDeChar<1);   
       
    for (int i=0; i<nbDeChar; i++)   
    {   
        if (type==1 || (type==3 && (rand()%2)))   
            cout << aleaSet('a','z');   
        else   
            cout << aleaSet('A','Z');   
    }   
       
    cout << endl;   
       
    return 0;   
}
La confiance n'exclut pas le contrôle
0
Lolpuppy
 
C'est quoi inline
Dsl. Je commence!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
À la limite inline on s'en moque, c'est juste un peu d'optimisation.
Ça veut dire que lors de la compilation les appels aux fonctions inline seront remplacées directement par le contenu de la fonction (comme une macro en C).

Exemple : avec mon inline sur aleaSet le code qui sera véritablement compilé sera donc :

if (type==1 || (type==3 && (rand()%2)))   
    cout << ('a' + rand()%('z'-'a'+1));   
else   
    cout << ('A' + rand()%('Z'-'A'+1));
0