Probleme en Programme C
abdelali
-
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,
Merci à vous d'avance de bien vouloir m'expliquer le programme suivant surtt les 2 boucles for
char CH[101];
int I,J;
int PALI;
printf("entrer une ligne de texte (max.100 caractères):\n");gets(CH);
for(J=0;CH[J];J++);
j--;
PALI=1;
for(I=0;PALI&&I<J;I++,J--)
if(CH[I]!=CH[J])
PALI=0;
if(PALI)
printf("la chaine \"%s\"est un palindrome.\n",CH);
else
printf("la chaine \"%s\"n'est pas un palindrome.\n",CH);
}
Merci à vous d'avance de bien vouloir m'expliquer le programme suivant surtt les 2 boucles for
char CH[101];
int I,J;
int PALI;
printf("entrer une ligne de texte (max.100 caractères):\n");gets(CH);
for(J=0;CH[J];J++);
j--;
PALI=1;
for(I=0;PALI&&I<J;I++,J--)
if(CH[I]!=CH[J])
PALI=0;
if(PALI)
printf("la chaine \"%s\"est un palindrome.\n",CH);
else
printf("la chaine \"%s\"n'est pas un palindrome.\n",CH);
}
A voir également:
- Probleme en Programme C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
1 réponse
Bonjour,
La première boucle ;
for(J=0;CH[J];J++);
sert uniquement à mettre dans J le nombre de caractères entrés puis on a le
J--;
qui retire 1 au nombre total de caractères
PALI=1;
PALI est initialisé à 1
la seconde boucle :
for(I=0;PALI&&I<J;I++,J--)
if(CH[I]!=CH[J])
PALI=0;
PALI&&I<J veut dire, "Tant que" PALI et I sont inférieurs à J
I++,J-- veut dire, on incrémente I de 1 et on décrémente J de 1
if(CH[I]!=CH[J]) veut dire, "si" le caractère à la position I n'est pas le même que le caractère à la position J
alors PALI=0
la seconde boucle peut être codée ainsi :
Edit: pour la première boucle j'explique ce que ça fait mais pas ce que ça fait ahahah. Donc en fait la première boucle :
Veut dire "tant que le caractère n'est pas nul", tant que CH[J] n'est pas le caractère de fin de chaine le fameux \0 qui vaux 0.
ce qui revient à faire
La première boucle ;
for(J=0;CH[J];J++);
sert uniquement à mettre dans J le nombre de caractères entrés puis on a le
J--;
qui retire 1 au nombre total de caractères
PALI=1;
PALI est initialisé à 1
la seconde boucle :
for(I=0;PALI&&I<J;I++,J--)
if(CH[I]!=CH[J])
PALI=0;
PALI&&I<J veut dire, "Tant que" PALI et I sont inférieurs à J
I++,J-- veut dire, on incrémente I de 1 et on décrémente J de 1
if(CH[I]!=CH[J]) veut dire, "si" le caractère à la position I n'est pas le même que le caractère à la position J
alors PALI=0
la seconde boucle peut être codée ainsi :
for(I=0;I<J;I++) { if(PALI>=J) break; if(CH[I]!=CH[J]) PALI=0; J--; }
Edit: pour la première boucle j'explique ce que ça fait mais pas ce que ça fait ahahah. Donc en fait la première boucle :
for(J=0;CH[J];J++);
Veut dire "tant que le caractère n'est pas nul", tant que CH[J] n'est pas le caractère de fin de chaine le fameux \0 qui vaux 0.
ce qui revient à faire
for(J=0;CH[J]!='\0';J++);