@ghuysmans99 : J'ai essayé de mettre un switch, mais je ne pouvais compiler (erreur de type : "" non-declaré)
@brunew : Je vais corriger avec ce que tu me dis, merci ;)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 30 déc. 2009 à 09:46
C'est dans l'autre sens, un indicateur vaut 0 pour FAUX ou nimporte quoi d'autre sera VRAI.
Comme pour toutes les "Cesaritudes" qu'on a sur cppfrance et qui proposent les mêmes défauts de débutants:
for(i=0 ; i<strlen(texte) ; i++)
NON et NON, tu ne modifies pas la longueur, il est donc improductif de la recalculer à chaque tour. On peut ajouter qu'il est totalement inutile de parcourir la chaine 2 fois:
char a;
while(a = *texte) {
// TU TRAITES ICI
*texte++;
}
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 30 déc. 2009 à 00:27
La série des "if (menu == X)" peut être remplacée par un switch.
"else if (crypter == 0) " n'a aucun sens : si crypter est booléen et qu'il ne vaut pas 1, il vaut 0 !
5 janv. 2010 à 14:21
// tu traites ici
dans ton code ^^
5 janv. 2010 à 14:02
Un truc dans ce genre:
void cesar_crypt(int decallage, char *texte)
{
char c;
int decMin = decallage - 'a';
decallage -= 'A';
while(c = *texte) {
if(c > 'z') goto nextCHR;
if(c < 'A') goto nextCHR;
if(c <= 'Z') goto goMAJ;
if(c < 'a') goto nextCHR;
c = 'a' + (c + decMin) % 26;
goto goREPLACE;
goMAJ:
c = 'A' + (c + decallage) % 26;
goREPLACE: *texte = c;
nextCHR: texte++;
}
}
5 janv. 2010 à 11:06
for(i=0 ; i<strlen(texte) ; i++)
par
char i;
while(i = *texte) {
puis mettre
if ('a' <= texte[i] && texte[i] <= 'z')
texte[i] = 'a' + ((texte[i] - 'a') + decallage)%26;
else
if ('A' <= texte[i] && texte[i] <= 'Z')
texte[i] = 'A' + ((texte[i] - 'A') + decallage)%26;
else
{
}
et après
texte++;
}
C'est sa ?
30 déc. 2009 à 14:07
char a;
while(a = *texte) {
// TU TRAITES ICI
texte++;
}
et non pas *texte++ comme dit dans comment précédent.
30 déc. 2009 à 13:11
@ghuysmans99 : J'ai essayé de mettre un switch, mais je ne pouvais compiler (erreur de type : "" non-declaré)
@brunew : Je vais corriger avec ce que tu me dis, merci ;)
30 déc. 2009 à 09:46
Comme pour toutes les "Cesaritudes" qu'on a sur cppfrance et qui proposent les mêmes défauts de débutants:
for(i=0 ; i<strlen(texte) ; i++)
NON et NON, tu ne modifies pas la longueur, il est donc improductif de la recalculer à chaque tour. On peut ajouter qu'il est totalement inutile de parcourir la chaine 2 fois:
char a;
while(a = *texte) {
// TU TRAITES ICI
*texte++;
}
30 déc. 2009 à 00:27
"else if (crypter == 0) " n'a aucun sens : si crypter est booléen et qu'il ne vaut pas 1, il vaut 0 !