Code crypté

code c Messages postés 1 Statut Membre -  
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);

}

1 réponse

Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
 
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.
#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
0