mickpiet
Messages postés6Date d'inscriptionsamedi 30 septembre 2006StatutMembreDernière intervention31 octobre 2006
-
31 oct. 2006 à 15:04
cs_hsmrpro
Messages postés3Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 1 avril 2007
-
27 mars 2007 à 19:03
Salut, je dois faire une pour tester si un nombre est un palindrome.
pour cela, je ne dois pas utiliser d'autre bibliothèque que iostream.
j'ai pensé a faire l'inversion de la moitié d'un tableau puis tester l'égalité avec la seconde moitié.
pour inverser j'ai fait cela:
bool estPalindrome(int TMot[],int TMot2[],int taille)
{
int i,a;
a=0;
if (taille%2 == 0)
for (i=0 ; i < (taille/2) ; i++)
{
TMot2[i]=TMot[(taille/2) - i];
}
else
for (i=0 ; i < ((taille/2)-1) ; i++)
{
TMot2[i]=TMot[((taille/2)-1)-i];
}
}
est ce que ca marche ?? pour la suite jvois pas comment faire.
aidez moi svp
mickpiet
Messages postés6Date d'inscriptionsamedi 30 septembre 2006StatutMembreDernière intervention31 octobre 2006 31 oct. 2006 à 15:18
#include
using namespace std;
void saisieMot(int TMot[],int taille)
{
int i;
cout<<"Entrer la taille du mot"<<endl;
cin >> taille;
for (i = 0; i < taille ; i++)
{
cout << " Entrez les lettres " << endl;
cin >> TMot[i];
}
}
void afficherMot(int TMot[],int taille)
{
int i;
for (i = 0; i < 10 ; i++)
{
cout << TMot[i];
}
cout << endl;
}
void extraireSousMot(int TMot[],int taille)
{
int indice,LongueurExtrait,i;
cout << "A partir de quel indice faut-il couper ?";
cin >> indice;
cout << "Combien de lettres doit-on prendre ?";
cin >> LongueurExtrait;
for (i = indice; i < indice + LongueurExtrait; i++)
{
cout << TMot[i];
}
cout << endl;
}
bool estPalindrome(int TMot[],int TMot2[],int taille)
{
int i,a;
a=0;
if (taille%2 == 0)
for (i=0 ; i < (taille/2) ; i++)
{
TMot2[i]=TMot[(taille/2) - i];
}
else
for (i=0 ; i < ((taille/2)-1) ; i++)
{
TMot2[i]=TMot[((taille/2)-1)-i];
}
}
int main()
{
int taille;
const int TAILLE = 100;
int TMot[TAILLE];
int TMot2[TAILLE];
saisieMot(TMot,taille);
afficherMot(TMot,taille);
extraireSousMot(TMot,taille);
estPalindrome(TMot,TMot2,taille);
system ("PAUSE");
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 31 oct. 2006 à 15:27
bool estPalindrome(int TMot[],int TMot2[],int taille)
la signature me semble bizarre.
Je verrais plutot
bool estPalindrome(char* mot, int taille)
Un seul tableau est utile.
Je prend un pointeur du début qui avance, et un pointeur de la fin qui recule:
bool estPalindrome(char* mot, int taille)
{
char* debut = mot;
char* fin = mot + taille - 1;
while(debut < fin)
{
if(*debut++ != *fin--) return false;
}
return true;
}
mickpiet
Messages postés6Date d'inscriptionsamedi 30 septembre 2006StatutMembreDernière intervention31 octobre 2006 31 oct. 2006 à 15:29
le probleme est que je n'ai pas appris les pointeurs, donc je n'ai pas le droit de m'en servir, et mon mot est un nombre dont les chiffres sont dans les cases d'un tableau
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 31 oct. 2006 à 15:41
bool estPalindrome(int mot[], int taille)
{ int debut 0, fin taille - 1;
while(debut < fin)
{
// pareil qu'avant, mais avec des tableaux
}
return true;
}
En tous cas la fonction estPalindrome de mickpiet ne peut pas être correcte, vu qu'elle ne retourne rien
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 31 oct. 2006 à 15:50
Si ta partie est bonne,
ne faut il pas juste compter le premier tableau puis le deuxieme et les comparer ?
Ou alors j'ai pas bien compris ta question...
Esceque c'est les valeurs additionnées le palindrome ou alors que chaque nombre du premier apparaissent dans le deuxieme tab ?
Sinon c'est aussi simple, une boucle imbriquée, pour chaque valeur du tab1, on regarde chaque valeur du tab2, si elle n'y ai pas, break et renvoi faux, si elles y sont toutes renvoi vrai.
mickpiet
Messages postés6Date d'inscriptionsamedi 30 septembre 2006StatutMembreDernière intervention31 octobre 2006 31 oct. 2006 à 17:05
bon, je vais taper mon sujet en entier.
un palindorme est un mot (ou nombre) se lisant dans les deux sens.
un sous mot palindrome d'un mot est un sous-mot qui est un palindrome:
ex: "121" est un sous mot palindrome de "21213121". un sous-mot palindrome est maximal lorsqu'il n'est pas contenu dans un sous-mot palindrome plus grand. "121" n'est pas maximal car il est contenu dans 1213121. L'ensemble des sous-mots palindromes maximaux de 21213121 est 212 et 1213121.
L'objectif de cet exercice est la recherche des sous-mots maximaux d'un mot donné.
Nous considérons dans la suite de mot sur l'alphabet A= {0,1,2,3,4,5,6,7,8,9}. nous nous baserons sur le type TMot
const int TAILLE = 100
Type : TMot = tableau [TAILLE] d'entiers
1-Ecrire une fonction saisieMot qui permet de saisir un mot. L'utilisateur entre la taille du mot puis les diférentes lettres. (faite)
2-Ecrire une fonction afficherMot. (faite)
3-Ecrire une fonction motAleatoire qui permet de générer un mot aléatoire d'une longueur longueur sur l'alphabet {0,...,valeurMax} (je ne l'ai pas encore faite)
4-Ecrire une fonction extraireSousMot qui permet d'extraire un sous mot extrait de longueur longueurExtrait à partir de l'indice indice du mot source de longueur longueur
ex: si le mot est 1234121, indice = 2, longueurExtrait=3. alors extrait = 341 (faite)
5-Ecrire une fonction estPalindrome qui renvoie vrai si le mot m de longueur longueur est un palindrome, et faux sinon.
6-Afin de stocker l'ensemble des sous palindromes maximaux d'un mot donné, définissez une ou plusieurs structures de données qui permet de stocker l'ensemble des sous-mots palindromes maximaux.
7-écrire une fonction afficherEnsemblePalindromesMaximaux qui permet d'afficher l'ensemble des sous palindromes maximaux
8-Ecrire une fonction recopierMot qui étant donné un mot source de longueurS le recopie dans un mot destination.
9-Ecrire une fonction recherchePalindromeMaximaux qui étant donné un mot m de longueur longueur, permet de récupérer l'ensemble des sous-mots palindromes maximaux de m
mickpiet
Messages postés6Date d'inscriptionsamedi 30 septembre 2006StatutMembreDernière intervention31 octobre 2006 31 oct. 2006 à 17:23
pour mon code, j'en suis là
#include
using namespace std;
void saisieMot(int TMot[],int taille)
{
int i;
cout<<"Entrer la taille du mot"<<endl;
cin >> taille;
for (i = 0; i < taille ; i++)
{
cout << " Entrez les lettres " << endl;
cin >> TMot[i];
}
}
void afficherMot(int TMot[],int taille)
{
int i;
for (i = 0; i < 10 ; i++)
{
cout << TMot[i];
}
cout << endl;
}
void extraireSousMot(int TMot[],int taille)
{
int indice,LongueurExtrait,i;
cout << "A partir de quel indice faut-il couper ?";
cin >> indice;
cout << "Combien de lettres doit-on prendre ?";
cin >> LongueurExtrait;
for (i = indice; i < indice + LongueurExtrait; i++)
{
cout << TMot[i];
}
cout << endl;
}
bool estPalindrome(int TMot[],int TMot2[],int taille)
{
int i,a,tmp;
a=0;
for (i=0 ; i < taille ; i++)
{
tmp = TMot2[i];
TMot2[i]=TMot[taille-i-1];
TMot[taille-i-1]=tmp;
if (TMot[i] == TMot2[i])
a=1;
}
if (a==0)
return false;
else
return true;
}
int main()
{
int taille;
const int TAILLE = 100;
int TMot[TAILLE];
int TMot2[TAILLE];
saisieMot(TMot,taille);
afficherMot(TMot,taille);
extraireSousMot(TMot,taille);
estPalindrome(TMot,TMot2,taille);
system ("PAUSE");
cs_hsmrpro
Messages postés3Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 1 avril 2007 26 mars 2007 à 14:14
Bjr à tous
J'suis nouve au sur ce site et novice en programmation. J'essaie d'écrire un code ki teste si une chaine de caractère dont la limite est fixée est un palindrome. Voici ma function
int est_palindrome(chaine ch)
{
int palindrome=0;
int debut= 0;
int fin=L-1;
Mais ce qui est bizar c'est que elle retourne à chak vrai même kan le mot n'est pas un palindrome. Et je ne vois pas ce qui peut occasionner ça! MErci pr votre aide