Accueil > Forum > > > > Cryptage de Jules César
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
|
"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
|
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 ?
|
|
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[
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|