Problème d'exécution

Fermé
younes-zi - Modifié par crapoulou le 2/01/2015 à 21:59
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 3 janv. 2015 à 15:55
Bonjour
je cherche a chiffré et déchiffré une chaîne de caractère(string) avec une programmation #poo#c++# l'or de l'exécution l'icone Microsoft Visual c++ runtime library apparu
je sais pas d ou vient le problème qui m'empêche d'avancer !!
vola mon programme :
#pragma once
#include <string>
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
static const char alphanum[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int stringLength = sizeof(alphanum)-1;

char genRandom()  // Random string generator function.
{

 return alphanum[rand() % stringLength];
}


class OPT
{
 string message;
 string masque;
public:
 OPT();
 OPT(string);
 OPT(const OPT&);
 OPT operator=(const OPT&);
 string chiffrer();
 void afficher() const;
 ~OPT();
};
OPT::OPT()
{
}
OPT::OPT(string s)
{
 message = s;

 srand(time(0));
 for (int z = 0; z < message.length(); z++)
 {
  masque+= genRandom();

 }

}

OPT::OPT(const OPT &o)
{
 
 message = o.message;
 masque = o.masque;
}
OPT OPT::operator=(const OPT &o)
{
 if (this != &o)
 {
 
  message = o.message;
  masque = o.masque;
 }
 return *this;
}

string OPT::chiffrer()
{
//A = 65 ; Z= 90
//A=   0 ; Z = 25
string s;
for(int i=0;i<(int)masque.size();i++)
{
if((message[i]-65)+(masque[i]-65)<=25)
{
s[i]=(message[i]-65)+(masque[i]-65);
s[i]=s[i]+65;
}
else
{
s[i]=((message[i]-65)+(masque[i]-65)-25)+65;
}
}
return s;
}
void OPT::afficher() const
{
 cout << message << endl;
 cout << masque << endl;
}
OPT::~OPT()
{
}


int main()
{

 OPT a("HELLO");
 //a.chiffrer("WMCKL");
 a.afficher();
 //asci();
 cout << a.chiffrer();

 system("pause");
 return 0;
}


merci d'avance !!

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
3 janv. 2015 à 15:55
'lut,
l'or de l'exécution l'icone Microsoft Visual c++ runtime library apparu
Peux-tu être plus clair? J'ai pas compris...

Aussi:
#pragma once
est inutile vu que c'est un fichier de source et non d'en-tête.
using namespace std;
: utilisation déconseillée, précise le using seulement pour cout et string.
for (int z = 0; z < message.length(); z++)
: message.length() renvoie un entier non signé (
uint
), or
z
est un
int
, c'est à changer.

De plus, tu ne peux pas te permettre d'utiliser
rand()
comme tu le fais si tu veux pouvoir déchiffrer la chaine de caractère obtenue. Il faut enregistrer les valeurs qu'elle donne quelque part, ou s'en servir pour initialiser une clé de cryptage, qui sera sauvegardée ou écrite dans la console.
0