begin process at 2012 05 28 23:58:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

cryptage de cesar sur c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

cryptage de cesar sur c++

jeudi 24 juin 2010 à 23:37:34 | cryptage de cesar sur c++

juniordiaw

bjr a tous g un problemea vec mon code o faite lorske g rentre un letre il me la crypte mai sil sagi dun mo ou dune phrase il ne crypte ke la premiere letre voici le code o faite g suis nvo en domaine de programmation
c un cryptage de cesar avec un saut de 3 letre cest a dir a => d et b=>e


#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

char recherche(char c);

int main(int argc, char *argv[])
{
char txt;

cout << "Saisir texte ";
cin >> txt;

cout <<"Texte crypte : "<< recherche(txt) <<"\n";

system("PAUSE");
return EXIT_SUCCESS;
}

char recherche(char c)
{
char tab[26],i;
int j=0;

for(i='a'; i<='z';i++)
{
tab[j]=i;
j++;
}

for (j=0; j <= 25; j++)
{
if (tab[j]==c)
return tab[j+3];
else if (j==23)
return (tab[0]);
else if (j==24)
return (tab[1]);
else if (j==25)
return (tab[2]);

}
}
jeudi 24 juin 2010 à 23:53:09 | Re : cryptage de cesar sur c++

CptPingu

Administrateur CodeS-SourceS
Pas de langage sms. Fais un effort d'orthographe. Voir le règlement: http://www.cppfrance.com/reglement.aspx

Pas d'effort, pas de réponse.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 25 juin 2010 à 00:20:25 | Re : cryptage de cesar sur c++

juniordiaw

Bonjour à tous j'ai un probleme avec mon code au faite lorsque je rentre un léttre il me la crypte mais s'il sagit d'un mot ou d'une phrase il ne crypte que la premiere léttre voici le code.Au faite je suis nouveau en domaine de programmation
c'est un cryptage de cesar avec un saut de 3 léttre par exemple: a => d et b=>e


#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

char recherche(char c);

int main(int argc, char *argv[])
{
char txt;

cout << "Saisir texte ";
cin >> txt;

cout <<"Texte crypte : "<< recherche(txt) <<"\n";

system("PAUSE");
return EXIT_SUCCESS;
}

char recherche(char c)
{
char tab[26],i;
int j=0;

for(i='a'; i<='z';i++)
{
tab[j]=i;
j++;
}

for (j=0; j <= 25; j++)
{
if (tab[j]==c)
return tab[j+3];
else if (j==23)
return (tab[0]);
else if (j==24)
return (tab[1]);
else if (j==25)
return (tab[2]);

}
}
vendredi 25 juin 2010 à 11:06:41 | Re : cryptage de cesar sur c++

CptPingu

Administrateur CodeS-SourceS
1) On ne dit pas cryptage, mais chiffrement. Cryptage ne veut rien dire.
2) Attention, ici tu vas chiffrer un caractère mais pas une chaîne de caractère.
3) #include <cstdlib>, #include <conio.h> et #include <string> sont inutiles.
4) N'utilise jamais "using namespace std;", voir: [ Lien ]
5) Pas la peine de faire plein de "if", utilise un modulo (%) pour éviter de déborder.

Ex:
char tab[] = "abc";

tab[0] => 'a'
tab[1] => 'b'
tab[2] => 'c'

Si tu veux rester entre 0 et 2, il te suffit de faire un modulo de la taille du tableau:

tab[0 % 3] => tab[0] => 'a'
tab[1 % 3] => tab[1] => 'b'
tab[2 % 3] => tab[2] => 'c'
tab[3 % 3] => tab[0] => 'a'
tab[4 % 3] => tab[1] => 'b'
tab[5 % 3] => tab[2] => 'c'
etc...

Donc pour ton exercice, il te suffit de faire un modulo 26.

Tu peux directement écrire l'alphabet plutôt que de la calculer:
static const char tab[] = "abcdefghijklmnopqrstuvwxyz";

Pour trouver le début du tableau, tel que 'a' == 0, il suffit de soustraire 'a'.
Donc si tu fais ch - 'a', tu obtiens une position.
Ex:
Si ch = 'a', alors ch - 'a' == 'a' - 'a' == position 0
Si ch = 'b', alors ch - 'a' == 'b' - 'a' == position 1
Si ch = 'c', alors ch - 'a' == 'c' - 'a' == position 2
etc...

Ensuite, avec un simple modulo, tu devrais facilement t'en sortir:
tab[(ch - 'a' + j) % 26]

Essaie de corriger ton erreur et poste ton programme corrigé. On regardera ensemble comment l'améliorer.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 25 juin 2010 à 11:32:06 | Re : cryptage de cesar sur c++

juniordiaw

Réponse acceptée !
merci je vais le corriger pour voir ce que sa va donner.
samedi 26 juin 2010 à 14:57:20 | Re : cryptage de cesar sur c++

juniordiaw

merci pour ton aide mais pour te dire je sais même pa ou est ce qu'il faud mettre ces corrections au faite mon problème est je suis nouveau et je dirais que c'est 4ieme cour de c++ et le prof avance trop vite.donc si tu peut être plus clair et plus précis ça m'aidera beaucoup par ce que je suis un grand commencent en c++.ce code je lais fait en traduisant un algo et avec laide de mon livre mai même ça je me retrouve pas du tout.
lundi 28 juin 2010 à 11:33:26 | Re : cryptage de cesar sur c++

CptPingu

Administrateur CodeS-SourceS
Il n'y a pas de corrections toute faite. Je t'ai juste expliqué le principe. Donc après, c'est à toi de le coder.
Avec ce que je t'ai donné, c'est amplement suffisant pour réussir à chiffrer un caractère.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 9 juillet 2010 à 14:22:01 | Re : cryptage de cesar sur c++

CptPingu

Administrateur CodeS-SourceS
Pour ceux qui tomberais sur cette page, la réponse à la question est celle-ci:
(J'ai fait exprès de mettre du temps à répondre afin de laisser juniordiaw chercher la solution par lui même)

Code C/C++ :
#include <iostream>

static const char symbol[] = "abcdefghijklmnopqrstuvwxyz";

char convert(char c, int shift)
{
  if (c < 'a' || c > 'z')
    return c;

  return symbol[(c - 'a' + shift) %
		(sizeof (symbol) - 1)];
}

std::string convert(const std::string& s, int shift)
{
  std::string res;
  res.resize(s.size());
  for (unsigned int i = 0; i < s.size(); ++i)
    res[i] = convert(s[i], shift);

  return res;
}

int main()
{
  std::string txt;
  const int shift = 3; // choix de la valeur de décalage

  std::cout << "Saisir texte ";
  std::cin >> txt;

  std::cout << "Texte: "<< txt << std::endl
	    << "Texte chiffré: " << convert(txt, shift) << std::endl;

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio

Merci d'utiliser Réponse acceptée quand un post répond à votre question
mardi 13 juillet 2010 à 13:48:14 | Re : cryptage de cesar sur c++

juniordiaw

merci a toi


Cette discussion est classée dans : include, tab, return, char, if


Répondre à ce message

Sujets en rapport avec ce message

minmax morpion probleme ! [ par TrD_ ] Bon voila ma source, je cherche a mettre en pratique l'algo minmax, mais je suis confronté a des erreurs que je ne comprend pas ! A l execution lors d Erreur de segmentation : à cause d'un strcmp() [ par tibs624 ] Tout est dit dans le titre à la compilation aucun problème mais lors de l'exécution de mon programme. Je vous met le code et les explications. Ce code Petit probleme avec injection de dll [ par ghostichou ] Tout d'abord je tiens à vous préciser que j'ai deja regarder les autres sujets parlant de ça sur code sources mais même en les relisant je n'arrive pa port serie sous linux rts txd drt source piklab [ par zemil ] je sui sous linux depuis peux je program avec kdevelope en c++ par hazard j'ais trouvé un logiciel qui arive a faire se que je recherche jé ais donc r char* dans un destructeur [ par pepsidrinker ] Premierement, merci de lire ce post, et merci a tous ceux qui veulent maider. Jai le probleme suivant: Jassigne des char* avec 'new[]' dans le constru conversion c++ vers c# [ par survcopt ] Bonjour,Je cherche à convertir le code d'une dll dont j'ai le source qui est écrit en c++ vers une version en c# car je maîtrise mieux ce langage.Je c lire un fichier ligne par ligne [ par jOlcoWboY ] Bien le bonjour, je me suis fait un 'tit bou de code afin de lire un fichier texte ligne par ligne. Je voulais juste savoir si il avait des améliorati Segmentation fault sur un tableau de char [ par MaxSoldier ] Bonsoir tout le monde !Je me suis mis au C/C++ sous linux il y a quelques jours et j'ai de nombreuses erreur de dépassement de tampon (segmentation fa reecrire une class en C [ par raoultate ] Salut!Voilà, j'aimerais pouvoir porter ce bout de code en C, ce fichier est un fichier *.h  Code :#ifndef __HTTPGET_URL__<


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales