PHPFrance

Discuter de tout ce qui touche au PHP, en français.

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

problème création suite de mot

Pour les initiés, les confirmés, les experts, les gourous... voire plus.

problème création suite de mot

Messagede sophie1812 le 17 Aoû 2008, 14:29

Bonjour,

J'ai un problème avec le PHP, je ne sais pas comment je pourrais faire pour arriver à générer le mot suivant et précédent d'un mot.

Je m'explique :

Prenons par exemple le mot "mot",
je cherche à faire un script qui puisse m'afficher le mot suivant : "mou" (après "t" c'est "u" dans l'alphabet)
Puis ce meme script doit m'afficher le mot précédent : "mos" (avant "t" c'est "s" dans l'alphabet)


Mais il faudrait prendre en compte les 4 cas particuliers suivant quand c'est "z" ou "a" :

1- exemple, le mot est "moz"
mot suivant : "mpa" (on incrémente "z" en "a" et "o" en "p")

2- exemple le mot est "zzz"
mot suivant : "aaaa" (on incrémente successivement les "z" en "a" et on ajoute un "a" au début du mot)

3- exemple le mot est "moa"
mot précédent : "mnz" (on décrément "a" en "z" et "o" en "n")

4- exemple le mot est "aaaa"
mot précédent : "zzz" (on décrémente successivement les "a" en "z" et on supprime le "z" au débutdu mot)


Avez vous une idée de script pour réaliser ce problème. je réfléchie de mon coté également.

Merci
sophie1812
Embryon
 
Messages: 6
Inscription: 17 Aoû 2008, 14:17

Publicité

Messagede Patriboom le 17 Aoû 2008, 14:36

As-tu déjà du code dans lequel insérer ces conditions et exigences ou pars-tu en neuf?

Si t'as du code, montre-le nous ici.


Autrement, ce peut être assez simple avec quelques boucles et l'alphabet monté en Array.
Pour simplifier le code, je te suggère de monter un tableau comme ceci:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
$Lettres = Array("z","a","b",..."y", "z","a");

Il suffit alors d'appeler les lettres selon leur rang habituel (a étant 1, b étant 2, z étant 26) et la précédante en soustrayant 1, la suivante en additionnant autant.
Soyez artisans de paix
Patriboom
Eléphant
 
Messages: 565
Inscription: 07 Sep 2007, 03:31
Localisation: Québec

Messagede sophie1812 le 17 Aoû 2008, 14:41

je n'ai pas de code pour le moment puisque c'est là mon soucis, je ne vois pas comment monter mes boucles.

Ton idée me parait intéressante, par contre je ne vois pas comment je pourrais faire ça avec des boucles.

Tu as une proposition qui marche ?
sophie1812
Embryon
 
Messages: 6
Inscription: 17 Aoû 2008, 14:17

Messagede Patriboom le 17 Aoû 2008, 16:01

Je ne sais pas ce que tu veux faire, à lire les quelques lignes ci-haut, tu sembles vouloir produire des mots de différentes longueurs. À vue de nez, voici une piste:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
$Lettres = array( ... liste des éléments alphabétiques, numériques ou symboliques);

$CeMot = Array();



for ($y=1; $y<=Nombre max de lettres; $y++) {

   $CeMot = "";

   for($x=1; $x<count($Lettres); $x++) {

          for ($z=0;$z<$y;$z++) {

               $CeMot .= $Lettres&#91;$z&#93;;

          }

          echo "Voici le mot généré: ".$CeMot.$Lettres&#91;$x&#93;;

          echo " ... précédé de :".$CeMot.$Lettres&#91;$x-1&#93;;

          echo " ... suivi de : ".$CeMot.$Lettres&#91;$x+1&#93;;

          echo "<br>";

   }

}

 


Rappelle-toi que le présent forum en est un d'entraide. Il ne faut pas penser que nous ferons tout le code pour toi. Il faut que tu y mettes du tien un peu.

D'ailleurs, il y a une erreur logique dans le traitement de construction de $CeMot (boucle $z) que tu devras trouver et résoudre.
Soyez artisans de paix
Patriboom
Eléphant
 
Messages: 565
Inscription: 07 Sep 2007, 03:31
Localisation: Québec

Messagede sophie1812 le 17 Aoû 2008, 17:04

ça ne fonctionne pas comme je le voudrais par contre moi j'ai cherché et voila ce que j'ai trouvé :

imaginons qu'au départ on parte avec le mot "arbre"

$mot = "arbre";
echo ++$mot;

Et là ça m'affiche bien le mot suivant qui est : arbrf

Par contre le soucis que j'ai c'est que pour le mot précédent j'ai voulu faire en toute logique : --$mot
mais là ça ne marche pas.

Donc ma question (après avoir cherché !), existe t'il une fonction ou un script capable de faire une décrémentation d'une chaine de caractère comme le fait ++$mot pour l'incrémentation ?

Merci
sophie1812
Embryon
 
Messages: 6
Inscription: 17 Aoû 2008, 14:17

Messagede Hywan le 17 Aoû 2008, 19:48

Hey :),

Il n'existe pas de surcharge d'opérateur en PHP.
J'ai regardé du côté de la SPL, mais je n'ai rien trouvé. Tu ne peux pas faire comme ça.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa Framework : http://hoa-project.net (sur identi.ca/hoaproject et twitter.com/hoaproject).
Avatar de l’utilisateur
Hywan
ViPHP
ViPHP
 
Messages: 4446
Inscription: 03 Mai 2005, 21:01
Localisation: Haut-doubs

Messagede sophie1812 le 17 Aoû 2008, 19:58

Si si j'ai testé pour l'incrémentation d'une chaine de caractère et ça fonctionne :

$mot = "arbre";
echo ++$mot;

ça m'affiche bien "arbrf"



Le petit soucis que j'ai et c'est pour cela que j'ai besoin d'aide c'est que je cherche à faire une décrémentation également, mais "--$mot" ne fonctionne pas.

Connaissez vous une fonction ou un script pouvant faire la meme chose que "++$mot" mais en décrémentation de chaine de caractère.

Merci
sophie1812
Embryon
 
Messages: 6
Inscription: 17 Aoû 2008, 14:17

Messagede Aureusms le 17 Aoû 2008, 20:05

Une petite idée rapide :

1. Tu mets tout tes mots de même longueur comparé avec strlen() dans un tableau
2. Tu tries ton tableau avec sort()
3. Tu compares la clef retournées avec array_keys()
4. Si clef du mot n°1 est plus grande que clef du mot n°2 : mot n°1 est suivant par rapport à mot n°2
5. Tu fais de même pour tout tes longueur de mots
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr
Avatar de l’utilisateur
Aureusms
ViPHP
ViPHP
 
Messages: 1269
Inscription: 25 Fév 2005, 12:02
Localisation: Rouen

Messagede AB le 17 Aoû 2008, 20:30

sophie1812 a écrit:Si si j'ai testé pour l'incrémentation d'une chaine de caractère et ça fonctionne :

$mot = "arbre";
echo ++$mot;

ça m'affiche bien "arbrf"



Le petit soucis que j'ai et c'est pour cela que j'ai besoin d'aide c'est que je cherche à faire une décrémentation également, mais "--$mot" ne fonctionne pas.

Connaissez vous une fonction ou un script pouvant faire la meme chose que "++$mot" mais en décrémentation de chaine de caractère.

Merci


Ben comme Hywan a vérifié j'ai tendance à le croire. Ton exemple fonctionne parce que tu as du bol
mais si l'on fait

$var = 'tataz';

echo ++$var;

ça affiche "tatba"
Quelques exemples de créations de sites sur http://www.abciweb.net
Avatar de l’utilisateur
AB
ViPHP
ViPHP
 
Messages: 4189
Inscription: 27 Déc 2006, 20:01
Localisation: Clermont-Ferrand

Messagede Hywan le 17 Aoû 2008, 20:48

Bah c'est correct. z + 1 = a, et on a une retenu de 1, donc a + 1 = b, soit tataz + 1 = tatba. Pour le --, je ne sais pas pourquoi ça marche pas.
Une chaîne de caractère, c'est juste un tableau de caractère. Bizarre déjà que le ++ fonctionne :?.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa Framework : http://hoa-project.net (sur identi.ca/hoaproject et twitter.com/hoaproject).
Avatar de l’utilisateur
Hywan
ViPHP
ViPHP
 
Messages: 4446
Inscription: 03 Mai 2005, 21:01
Localisation: Haut-doubs

Messagede Sékiltoyai le 17 Aoû 2008, 21:56

Euh, au passage, avant d'avancer des méthodes ultra complexes, l'opérateur modulo ( % ), ca existe…
Sékiltoyai
ViPHP
ViPHP
 
Messages: 5228
Inscription: 22 Avr 2007, 14:53
Localisation: Le Havre | Rennes

Messagede sophie1812 le 18 Aoû 2008, 02:02

moi aussi j'étais étonnée de voir que ++$mot fonctionne tout à fait comme je le voulais !

Mais je n'arrive toujours pas à comprendre pourquoi --$mot ne fonctionne pas !!

Quelqu'un a une idée ou une solution intermédiaire à proposer sur ce forum ?
sophie1812
Embryon
 
Messages: 6
Inscription: 17 Aoû 2008, 14:17

Messagede Hywan le 18 Aoû 2008, 11:58

Bah il faut juste te faire tes fonctions. ++ sur une chaîne de caractères est toléré par le langage, mais pas --. Conclusion : faire ses fonctions.

Une chaîne est un tableau, ne l'oublie pas (voir str_split()). Tu peux donc inverser les tableaux, les trier, et tout le toutime.
Essaye d'écrire un algorithme sur papier, tente de le coder, et on t'aidera pour avancer. Il y a plusieurs façons de procéder et je n'ai pas réfléchit à la meilleure. Donc choisis-en une qui te convient, et on l'étudiera avec toi :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa Framework : http://hoa-project.net (sur identi.ca/hoaproject et twitter.com/hoaproject).
Avatar de l’utilisateur
Hywan
ViPHP
ViPHP
 
Messages: 4446
Inscription: 03 Mai 2005, 21:01
Localisation: Haut-doubs


Retourner vers PHP avancé

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

  • Publicité