Problème en C++

Moderator: Mod

Problème en C++

Postby naran » Tue Feb 03, 2009 9:00 pm

Bon voilà, j'ai essayé de coder une sorte de cracker de code (ce n'en est pas un je sais, mais c'est pour l'algorithme en lui-même). Bref. J'ai compilé et lancé (sous windaube je l'avoue :oops: ) et je n'obtiens que : [quote:8ac7251140]Process return -1073741819 (0xC0000005) execution time : 0.093s
Press any key to continue.[/quote:8ac7251140]

au lieu de
[quote:8ac7251140] Le mot de passe etait <<ac>>
(etc)[/quote:8ac7251140]

Pourtant j'ai fait des jeux d'essai et je n'ai pas trouvé d'erreurs. D'autre part, si je modifie par "mot_de_passe="a" " ou n'importe quel mot à une lettre, le programme marche. Je me doute bien que l'erreur est à partir de "case 2" mais je vois pas où :cry: .

Donc voilà, un peu d'aide serait la bienvenue :)


[Je précise que je n'ai pas pour vocation de devenir un lammer, pour ceux qui voudraient me descendre ^^]
[code:1:8ac7251140]
#include<iostream>
#include<string>
#include<cstring>

using namespace std;

int main()
{
int taille_tentative, pos1,pos2, pos3;
taille_tentative=pos1=pos2=pos3=1;
string mot_de_passe="ac";
string tentative="";
string alphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

while (mot_de_passe!=tentative)
{
switch(taille_tentative)
{
/*premier cas: si le mot tenté ne contient qu'une seule lettre*/
case 1:
tentative=alphabet[pos1-1];
pos1=pos1+1;
if (pos1>=50)
{
taille_tentative=taille_tentative +1;
pos1=1;
}
break;

/* ***** fin premier cas ***** */

/*deuxieme cas: si le mot tenté contient deux lettres*/
case 2:
tentative=alphabet[pos1-1]+alphabet[pos2-1];
while(tentative[0]!=mot_de_passe[0])
{ pos1=pos1+1; tentative[0]=alphabet[pos1-1]; }
while(tentative[1]!=mot_de_passe[1])
{pos2=pos2+1; tentative[1]=alphabet[pos2-1]; }

/*if(tentative[3]=true)
{taille_tentative=taille_tentative+1; cout<< "Trois caracteres dans le mot de passe"<< endl;}
*/
break;

/* ***** fin deuxième cas ***** */

}
}

cout << "Le mot de passe etait <<"<< tentative[1] <<">>"<< endl;
return 0;
}
[/code:1:8ac7251140]

EDIT : J'ai fait tourner le prgm sous linux et la console me dit : "Erreur de segmentation"... J'ai beau chercher avec mon ami Google.... 'trouve pas mon erreur :oops:
User avatar
naran
Projets
 
Posts: 78
Joined: Thu Jan 01, 1970 1:00 am

Postby TorTukiTu » Wed Feb 04, 2009 4:15 pm

Ahlala "Erreur de segmentation" ou Seg fault. Ma meilleur amie. Ça se produit quand tu essaye d'écrire dans un emplacement mémoire qui n'appartient pas à ton processus. Tu a un indice qui sort des bornes d'un de tes tableaux.

Tu a essayé de mettre des printf("cooucou"); getchar(); pour voir où était exactement l'erreur? Tu a essayé de le faire tourner dans un déboggeur?

<remarque inutile>Curieux tu a un style "C" d'écrire le code, pourtant, c'est du C++.
Si je puis me permettre, tu devrais peut-être essayer le C avant le C++. Ça paraît plus en accort avec ta façon de coder.</remarque inutile>
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby naran » Wed Feb 04, 2009 5:32 pm

Ta remarque n'est pas inutile ^^ Je me disais la même chose. En fait j'ai déjà appris plus ou moins le C mais en cours j'étudie le C++ ... Donc ça donne ça ^^'

Sinon merci pour l'explication, je teste tout ça :)
User avatar
naran
Projets
 
Posts: 78
Joined: Thu Jan 01, 1970 1:00 am


Return to C/C++

Who is online

Users browsing this forum: No registered users and 2 guests

cron