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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Cryptage de Jules César


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

Cryptage de Jules César

mardi 16 novembre 2004 à 22:08:21 | Cryptage de Jules César

thedivxboy

Pourquoi ce code plante quand je mets un scanf ?
Et pourquoi lorsque je retire 27 au résultat crypté si il dépasse l'alphabet, cela m'affiche des caractères bizarres ?


#include <stdio.h>

void main() {
char i,j,alph[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ",phrase[100]={0},code,res[100]={0};

printf("Introduisez la phrase à crypter : ");
scanf("%s",&phrase);

printf("Entrez une clé de cryptage : ");
code=getchar()-48;
// scanf("%d",&code);

while(code>26)
code-=26;

printf("\n\nRésultat crypté : ");

for (i=0;i<sizeof(phrase)&&phrase[i]!='\0';i++) {
for(j=0;phrase[i]!=alph[j];j++);
if(alph[j]+code>sizeof(alph))
res[i]=(alph[j]+code)-27;
else
res[i]=alph[j]+code;
}

printf("%s",res);
}
mardi 16 novembre 2004 à 22:21:00 | Re : Cryptage de Jules César

coucou747

Administrateur CodeS-SourceS
"void main(){" => déja la c'est pas bon, c'est
int main(void){
enfin le void en argument n'est pas obligatoire...
ensuite on a pas besoin de l'alphabet, on se sert des codes ascii...

"&&phrase[i]!='\0'"=> totalement inutile


et sinon pour coder c'ets plus simple et plus rapide comme ça...
for (i=0;i<sizeof(phrase);i++) {
phrase[i]+=code;
}
printf("%s",phrase);
mardi 16 novembre 2004 à 22:21:32 | Re : Cryptage de Jules César

6co

tu n'as pas besoin de mettre" &"phrase, phrase désigne déjà une adresse (celle du premier élément du tableau de 100 caractères)

attention à ton point-virgule derrière ton second for, il ne doit pas être voulu...

6co
mardi 16 novembre 2004 à 22:28:35 | Re : Cryptage de Jules César

6co

au fait, coucou747, au lieu de mettre sizeof(phrase) en condition de fin de boucle, j'utiliserais la fonction strlen(phrase) pour éviter de mettre &&phrase[i]!='\0'

6co
mardi 16 novembre 2004 à 22:52:51 | Re : Cryptage de Jules César

coucou747

Administrateur CodeS-SourceS
exact mais j'ai pas pensé sur le coup, en fait c'est même totalement diférent car sizeof renveras le nombre de cases du tableau, alors que la chaine n'utilises pe pas tout le tableau...
mardi 16 novembre 2004 à 23:49:06 | Re : Cryptage de Jules César

thedivxboy

Wow wow wow que de réponses en si peu de temps

Bon alors le void main() { } c'est comme ça qu'on me l'a appris. Donc donnez plus d'explications pour que je comprenne la différence.

"&&phrase[i]!='\0'" --> ça aussi on me l'a appris, mais je pense qu'il est nécessaire sinon il va aussi transformer les 0 de la table phrase ...

Ta façon de coder en ASCII n'est pas logique car si je rentre la lettre Z (90 en ASCCI) et que je lui applique un décalage de 5 je vais me retrouver avec _ (95 en ASCII) au lieu de E. Voilà pourquoi j'utilise l'alphabet dans une variable.

Je sais que le &phrase n'est pas obligatoire mais bon c'est plus lisible comme ça
Quand au ; après le for c'est voulu puisque celui-ci ne contient aucune instructions. Donc de point-virgule stipule la fin du for. Corrigez moi si je me trompe ...

Comment fonctionne strlen(phrase) ?
mercredi 17 novembre 2004 à 00:00:35 | Re : Cryptage de Jules César

6co

ok j'avais à peine lu le code, désolé...

pour le int main(), disons que c'est une norme mais le void main(void) fonctionne également (quelques compilateurs le refuseront peut-être, il y a toujours des exceptions)...

au sujet du &phrase, tu ne m'as pas compris :
scanf("%s",phrase) -> ça marche
scanf("%s",&phrase) -> ça marchera pas
il n'y a aucune question de lisibilité la-dedans...

enfin pour strlen(phrase), c'est une fonction qui te renvoie la longueur d'une chaîne de caractères (jusqu'au zéro final), elle remplace donc aisément une boucle qui le cherche en incrémentant un entier...

laisse moi le temps de zyeuter ton code d'un peu plus près et je t'envoie une réponse concernant tes caractères bizarres après le "passage à la moulinette" de ta phrase

6co
mercredi 17 novembre 2004 à 00:12:27 | Re : Cryptage de Jules César

6co

ton code semble fonctionner...
le seul problème est que getchar() ne te laisse pas prendre le temps de choisir une clé, non ? alors il prends la valeur de la touche [ENTRER] et comme tu enlèves 48 à cette valeur, ça te laisse une valeur négative...
remplace getchar() par getch(), il faut inclure <conio.h> ou <coinio.c> sous dev++

je viens de me rendre compte que void main() ne passe pas sous dev++ par exemple....

6co
mercredi 17 novembre 2004 à 01:04:07 | Re : Cryptage de Jules César

djl

non, en c void main() est autorisé, mais tu dois compiler un .cpp (ou .C) sans savoir ce que ca implique (interdit en c++)

et on inclus jamais un .c (fichier source)
mercredi 17 novembre 2004 à 01:11:24 | Re : Cryptage de Jules César

6co

pourquoi tant de mystère...?
qu'est ce que ça implique ?

1 2 3

Cette discussion est classée dans : code, printf, cryptage, res, alph


Répondre à ce message

Sujets en rapport avec ce message

cryptage RSA [ par moicmoi ] Bon je me doute que je vais passer pour un boulet mais j'aurai besoin avant jeudi d'un code source du cryptage RSA en LANGAGE C. Mais un code tout si API Windows NT [ par Nebula ] Bonsoir !J'essaie de récupérer le propriétaire d'un fichier sur un volume NTFS, mais le système me retourne toujours un échec.... J'utilise le code su besoin d'aide : liste chainée [ par SemBy ] salutjutilse une liste chainée pour pouvoir traité une structure.declaration de ma structure :struct etu{ char nom[25]; char prenom[25]; SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich printf de #define [ par Manson ] Bonjour,voila j'ai un #define qui se presente sous cette forme :#define FILEVER 1,2,3,4Je ne peux absoluement pas changer son format.< tout premier porgramme en C. HELP !! [ par juancho2786 ] Bonjour a TOUS!Je viens de créer mon tout premier "programme" en C. Mais je ne suis pas sur que le code soit correcte. Est ce que vous pouvez me dire Demande d'explication a propos d'un code. [ par Strick9 ] Salut à tous, j'ai obtenu grâce à se merveilleux site ce code sources pour cet énoncés:un programme permettant de donner toute les combinaison suite a Windows plante {je sais pas nouveau } pour l'execution du mon code [ par darkwhite ] Salut a tous Je debute en C, et j'ai commencer a faire un petit programme. A la moitié de la creation je l'essaie mé windows me sort un message derreu Pb avec les printf [ par PierScher ] voici le code pour afficher un pendu :printf(" ++++++++++++++++++++++++\n");printf(" Pb avec fread et fwrite [ par Cyr62110 ] Boujour. Voila le probléme. Lorsque j'essaye d'ecrire des donnés avec fwrite(), Windows marque "Erreur, Windows ...".Voici le bout de code :char data[


Nos sponsors


Sondage...

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,718 sec (3)

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