Page 1 sur 1

comment corriger ce code

Posté : 10 sept. 2014, 22:31
par masska93300
bonjour a tous je galere un peu sur cette question la je voulais savoir si j'ai bon ou si il y a des erreurs j'aimerais bien les voirs svp

voila ce qu'on me dit au debut de la question :
Utilisez l'éditeur pour afficher un nombre aléatoire.
Créez une variable $nom et y mettre votre prénom.
Ensuite, afficher un caractère aléatoire de votre prénom. Utilisez vos connaissances de strlen(string), rand(min, max) et substr(string, start, length) pour ce faire.


et voila mon code : print rand (1,6);

$nom = "brahim";


// Utilisez les fonctions strlen(), substr(), et rand() pour
// afficher aléatoirement l'un des caractères de votre prénom.


$nom = "brahim" ;
echo strlen -> $nom ; // 6


rand(1, 6)

echo rand() . "1";
echo rand() . "11";
echo rand() . "10";


substr(string, start, length)

$nom = strlen($nom, 1); // retourne "f"
$nom = strlen($nom, 4,-1); // retourne "ef"
$nom = strlen($nom, 2,); // retourne "d"
?>

en essperant que vous aurez un peu pitier pour moi ! merci

Re: comment corriger ce code

Posté : 11 sept. 2014, 02:37
par Nestecha
Hello !

C'est beaucoup plus simple que ce que tu as écrit.

La marche à suivre (histoire de pas donner le code comme ça sans explication) :

1. On affiche un nombre aléatoire.
echo rand().'<br/>';
On met un saut de ligne (balise br) pour plus de clarté :)

2. On crée la variable $nom, on met notre prénom dedans.
$nom = "brahim";
3. On affiche un caractère aléatoire dans le prénom, en utilisant strlen, rand, et substr.

Premièrement, strlen va nous filer la longueur de notre variable, on peut donc mettre cette longueur dans une autre variable.
$iNumberOfLettersInName = strlen($nom);
Deuxièmement, substr c'est : substr($string, $start, $length).

Ici, $string c'est $nom, $start on sait pas, $length c'est 1 (on veut qu'une lettre).

$start c'est une position aléatoire dans le mot, donc rand(...).

Dans le rand, on veut qu'il commence par 0, puisque la première lettre d'un mot est à la position 0.
Puis on veut qu'il finisse à la dernière lettre du mot, qui est notre variable $iNumberOfLettersInName - 1.
Pourquoi -1 ? Parce que si la position de la première lettre est 0, la position de la dernière lettre ici, c'est 5. Or strlen donne le nombre de lettre, qui est ici 6.

Ce qui donne au final :
echo substr($nom, rand(0,$iNumberOfLettersInName-1), 1);
Oilà :)

Re: comment corriger ce code

Posté : 11 sept. 2014, 18:24
par masska93300
salut Nestecha merci d'avoir répondu a ma question !

j'ai taper le code que tu m'a dit de taper :

écho rand(0,2).'<br/>';
$nom = "brahim";
$nom = strlen($nom);
écho substr($nom, rand(0,$nom-1),1);

et c'est toujours pas bon . et s'a m'affiche toujours soit un 2 ou soit un 1 voir même quelques fois un 0 .

ils me répondent :

"Oups, merci de réessayer. Ce que vous affichez devrait être composé d'une seule lettre."


je ne comprend toujours pas ce qui cloche ! :x

A bientôt et je te remercie encore pour ton coup de main j'esepere que je te saoule pas trop ! :cry:

Re: comment corriger ce code

Posté : 11 sept. 2014, 18:27
par Nestecha
T'as pas tapé le code que je t'ai dit de taper.

"$nom = strlen($nom);" ce n'est pas bon. Il faut créer une variable qui contiendra le nombre de lettres dans le nom, c'est pour ça que ma variable a un nom différent. Sinon, tu changes aussi la réelle variable $nom.

Bref ça n'a aucun sens, il faut donc écrire :
$nombreDeLettresDansLeNom = strlen($nom);
Et à la fin :

echo substr($nom, rand(0,$nombreDeLettresDansLeNom-1),1);

Re: comment corriger ce code

Posté : 11 sept. 2014, 18:29
par Nestecha
Et lorsque ça t'affiche soit 0, 1, ou 2, c'est parce que t'as écrit rand(0,2). Forcément, il donne un nombre aléatoire entre 0 à 2, donc soit 0, soit 1, soit 2. Pour avoir un nombre aléatoire, n'importe lequel, il faut écrire rand();, comme je l'ai écrit dans mon code.

Re: comment corriger ce code

Posté : 11 sept. 2014, 18:35
par masska93300
donc je doit faire $nom=6 ?? si c'est bien sa ?

Re: comment corriger ce code

Posté : 11 sept. 2014, 18:43
par Nestecha
Quoi ?

MAIS NON !

Tu dois écrire $VARIABLEAVECLENOMQUETUVEUXMAISPASNOM = strlen($nom); !

Cette variable sera égale à 6, puisque $nom = "brahim", et que brahim, c'est SIX lettres.

Ensuite pour avoir qu'UNE lettre de $nom, tu devrais faire pour la PREMIERE lettre par exemple :

echo substr($nom, 0, 1) >>>>>>>>>>>>>> AFFICHE "b"
echo substr($nom, 1, 1) >>>>>>>>>>>>>> AFFICHE "r"

ETC.

Sauf que tu veux une lettre AU PIF.

Donc tu vas faire un rand(), mais ça servirait à rien de faire un rand(40, 60) pour avoir un nombre AU PIF entre 40 et 60, vu que y'a SIX lettres, ou plutôt, y'a $VARIABLEAVECLENOMQUETUVEUXMAISPASNOM lettres !!

Donc tu veux faire un rand(0, $VARIABLEAVECLENOMQUETUVEUXMAISPASNOM - 1) DANS le substr !

Ce qui te donnera pour l'affichage final :

echo substr($nom, rand(0, $VARIABLEAVECLENOMQUETUVEUXMAISPASNOM -1, 1);

Re: comment corriger ce code

Posté : 11 sept. 2014, 20:40
par moogli
Modération :
Le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
php-debutant/comment-corriger-code-t271945.html

Merci de prendre le temps de lire les règlements.