Code crypté
code c
Messages postés
1
Statut
Membre
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Est ce que ça serait possible de corriger le code suivant!
merci d'avance
On veut obtenir la chaîne "non a la guerre" est cryptée en "on n aalg eurre"
voila ce que j'ai fait:
#include<stdio.h>
int main()
{ char tab [225];
int i;
int inter;
printf("entrer phrase: ");
scanf("%s",tab);
i=0;
while(i<225)
{
inter=tab[i];
tab[i]=tab[i+1];
tab[i+1]=inter;
i=i+2;
}
printf("la phrase est: %s",tab);
}
Est ce que ça serait possible de corriger le code suivant!
merci d'avance
On veut obtenir la chaîne "non a la guerre" est cryptée en "on n aalg eurre"
voila ce que j'ai fait:
#include<stdio.h>
int main()
{ char tab [225];
int i;
int inter;
printf("entrer phrase: ");
scanf("%s",tab);
i=0;
while(i<225)
{
inter=tab[i];
tab[i]=tab[i+1];
tab[i+1]=inter;
i=i+2;
}
printf("la phrase est: %s",tab);
}
A voir également:
- Code crypté
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
1 réponse
Bonjour,
il y a plusieurs problèmes, le premier c'est le scanf qui ne prend pas les caractères blancs comme les espaces du coup seuls les premiers caractères sans espace seront pris. Le second dans la boucle vous testez i<225 hors la chaine à manipuler fait moins de 225 char ce qui va tronquer le résultat car le tableau n'est pas initialisé à zéro mais rempli de conneries suivant l'état dans lequel est la mémoire qu'il utilise. Le troisième n'est pas super grave vous utilisez un int pour la var inter alors que vous manipulez des char, inter devrait être un char et non un int car les deux types sont de taille différente et faire ça pourrait causer des problèmes dans d'autres circonstances. La quatrième erreur c'est d'avoir oublier de retourner zéro à la fin du programme, le main doit toujours retourner un entier qui sert de code dans le standard l'entête stdlib.h permet d'utiliser le raccourci :
return EXIT_SUCCESS; en cas de réussite du programme ou,
return EXIT_FAILURE; en cas de problème
permet donc de savoir si le programme a planté ou non grâce au code d'erreur qu'il retourne, le zéro est un EXIT_SUCCESS.
A vous d'améliorer la fonction recupalarach pour qu'elle ne dépasse pas la taille max du tableau
il y a plusieurs problèmes, le premier c'est le scanf qui ne prend pas les caractères blancs comme les espaces du coup seuls les premiers caractères sans espace seront pris. Le second dans la boucle vous testez i<225 hors la chaine à manipuler fait moins de 225 char ce qui va tronquer le résultat car le tableau n'est pas initialisé à zéro mais rempli de conneries suivant l'état dans lequel est la mémoire qu'il utilise. Le troisième n'est pas super grave vous utilisez un int pour la var inter alors que vous manipulez des char, inter devrait être un char et non un int car les deux types sont de taille différente et faire ça pourrait causer des problèmes dans d'autres circonstances. La quatrième erreur c'est d'avoir oublier de retourner zéro à la fin du programme, le main doit toujours retourner un entier qui sert de code dans le standard l'entête stdlib.h permet d'utiliser le raccourci :
return EXIT_SUCCESS; en cas de réussite du programme ou,
return EXIT_FAILURE; en cas de problème
permet donc de savoir si le programme a planté ou non grâce au code d'erreur qu'il retourne, le zéro est un EXIT_SUCCESS.
#include<stdio.h>
void recupalarach(char *t){ /* remplace scanf */
char c; int i; for(i=0;(c=getchar())!='\n';i++) t[i]=c;
t[i]='\0';
}
int main(void){
char tab[225];
int i;
char inter;
printf("entrer phrase: ");
recupalarach(tab);
i=0;
while(tab[i+1]!='\0' && i<225)
{
inter=tab[i];
tab[i]=tab[i+1];
tab[i+1]=inter;
i=i+2;
}
printf("la phrase est: %s\n",tab);
return 0;
}
A vous d'améliorer la fonction recupalarach pour qu'elle ne dépasse pas la taille max du tableau