[RESOLU] afficher une valeur string de valeur int

dragonfly45
Invité n'ayant pas de compte PHPfrance

24 oct. 2018, 22:07

Bonsoir,

je suis débutante en code et mon école me demande de répondre à cet exercice :

- Créé une variable $nbStar contenant un entier.
- Fais en sorte que ton code affiche une chaîne de caractères contenant autant d'étoile que $nbStar
ex : si $nbStar vaut 2, il faut que ton code renvoie "**"
si $nbStar vaut 5, il faut que ton code renvoie "*****"

j'ai codé :

<?php
$nbStar = 5;

switch ($nbStar)
{
case 0:
echo "";
break;

case 1:
echo "*";
break;

case 2:
echo "**";
break;

case 3:
echo "***";
break;

case 4:
echo "****";
break;

case 5:
echo "*****";
break;

case 6:
echo "******";
break;

case 7:
echo "*******";
break;

case 8:
echo "********";
break;

case 9:
echo "*********";
break;

case 10:
echo "**********";
break;

case 11:
echo "***********";
break;

case 12:
echo "************";
break;

case 13:
echo "*************";
break;

case 14:
echo "**************";
break;

case 15:
echo "***************";
break;

case 16:
echo "****************";
break;

case 17:
echo "*****************";
break;

case 18:
echo "******************";
break;

case 19:
echo "*******************";
break;

case 20:
echo "********************";
break;

default:
echo "Sorry, it's not possible!";
}
?>

mon corecteur me fait remarquer que ma solution est restrictive puisqu'elle s'arrete à 20 et me demande que mon code fonctionne qelque soit la valeur de $nbStar.

Je suis complétement perdue!

Mammouth du PHP | 2703 Messages

24 oct. 2018, 22:38


Petit nouveau ! | 7 Messages

24 oct. 2018, 23:13

merci de l'indication mais je connais les boucles for, je doit avoir pété un boulon quelque part parce que je ne vois pas quoi en faire pour m'aider

Mammouth du PHP | 2703 Messages

24 oct. 2018, 23:17

prendre l'exemple 1, lire l'énoncé, ce qu'on doit afficher, c'est une *. donc modifier l'exemple 1 pour afficher une * ou lieu de $i.

Petit nouveau ! | 7 Messages

24 oct. 2018, 23:27

merci pour l'explication
voici ce que j'ai codé :
<?php
for ($nbStar = 1; $nbStar <= 25; $nbStar++) {
echo "*";
}
cela affiche donc 25 étoiles
mais ce nombre d'"*" se modifie quand on change la valeur de la condition et non la valeur $nbStar il me semble

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 oct. 2018, 23:33

Tu y es presque !

Remplace dans ton code $nbStar par $compteur vu que cette variable est juste là pour compter de 1 à $nbStar le nombre d'étoile à écrire

Et ensuite remplace ta valeur max (25 dans ton exemple) par la variable $nbStar qui t'indique le nombre d'étoile à utiliser :D
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

24 oct. 2018, 23:41

comme ca?

<?php
for ($compteur = 1; $nbStar <= $nbstar; $nbStar++) {
echo "*";
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 oct. 2018, 00:12

Non, pas comme ça.

Ton précédent code était presque bon.
Réfléchis au fonctionnement de for() par rapport à ton besoin
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

25 oct. 2018, 00:42

je sèche

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 oct. 2018, 00:53

C'est que c'est le moment d'aller dormir pour reposer le cerveau et y re-réfléchir demain ! #-o

Demain, tu reprendras ton précédent code, essayera de comprendre à quoi serve chaque ligne et portion de code.
Puis tu reliras ma réponse, tu as tout dedans.
Bonne nuit et à demain ! :-D
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

25 oct. 2018, 00:59

ok, c'est possible que mon cerveau soit en état de liquéfaction avancée et qu'une nuit de sommeil serait profitable. A demain!

Petit nouveau ! | 7 Messages

25 oct. 2018, 11:07

la nuit ne m'a pas porté conseil, j'y arrive pas.

Mammouth du PHP | 2703 Messages

25 oct. 2018, 13:18

l'exemple 1, c'est :
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
ce que l'on veut, c'est que cela affiche une *. le changement apporté est bon.
ensuite, ce que l'on veut, c'est que cela affiche $nbStar étoiles et non 10.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 oct. 2018, 14:20

Décris en français ce que fait ton code de 22h41
Une fois que tu auras bien compris son fonctionnement, l'adaptation à ta problématique sera plus simple
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

25 oct. 2018, 15:56

ca y est j'ai trouvé, c'était tout simplement

<?php

$nbStar = 10;
{
echo str_repeat ("*", $nbStar);
}