Schlaf
Messages postés12Date d'inscriptionlundi 10 janvier 2011StatutMembreDernière intervention10 janvier 2011
-
11 janv. 2009 à 17:04
Schlaf
Messages postés12Date d'inscriptionlundi 10 janvier 2011StatutMembreDernière intervention10 janvier 2011
-
12 janv. 2009 à 19:22
Bonjour,
alors voila je doit rédiger un script , voici l'énoncé:
(tableau a 1 dimension):Écrire le script qui permet de saisir un mot et qui permet de dire si le mot saisi est un palindrome (c'est un mot qui se lit de la même façon dans les 2 sens exemple:"ressasser","elle","radar").
Pour cela j'ai l'intention d'écrire le mot dans un tableau, de calculer la taille du mot,de calculer la lettre centrale, d'utiliser 2 "pour" : 1 qui part du début jusqu'au milieu et un autre qui part de la fin vers le milieu, puis comparer si ces lettres sont égales jusqu'au bout.
Est ce la bonne solution?
J'ai un problème ce que je ne sais pas compter la taille du mot.
Voici le début de mon script:
#include
#include <stdlib.h>
#include<CSTDIO>
int main()
{
//Déclaration des variables
const int max=20;
char tab[max];
int cpt,i,j;
//Saisie du mot
cout<<"Veuillez saisir un mot : ";
gets(tab);
//Comptage du nombre de lettres
cpt=0;
for (i=0;i<max;i=i+1)
{
while (tab[i]!='\0')
{
cpt=cpt+1;
}
}
cout<<cpt<<endl;
system("PAUSE");
return 0;
}
L'exécutable ne me renvoie rien après la saisie du mot. Ce n'est pas la bonne manière?
Merci
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 11 janv. 2009 à 18:09
Beaucop plus simple strlen(), ouai.
Mais moi je ne suis pas d'accord sur l'algo.
J'ai peut-être tord mais je trouve que c'est une perte de temps que de compter la taille du mot puis exécuter 2 boucles for().
Je ferais comme ceci :
int taille=strlen(mot)-1;
bool verif=true; //on considère que le mot est un palindrome
int a=0;
while ((a++ <= taille) && (verif)) {
if (mot[a] != mot[taille-a]) verif=false;
}
Si verif = true alors le mot est un palindrome, sinon non.
On peut aller encore plus rapidement en arrêtant la boucle à la moitié du mot, mais ça change en fonctione du nombre (pair ou impair) de lettres.
Code testé et il fonctionne.
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 11 janv. 2009 à 18:12
Arf, le temps d'écrire et de tester, ed73 m'a devandé ^^
Si je peux faire des commentaires à vos réponses : on est en C++ et non en C donc le printf(); ...
Remarque le strlen() est du C aussi, je crois. Aurait-on tous faux ?
Cordialement, uaip.
Vous n’avez pas trouvé la réponse que vous recherchez ?