par
moogli » 24 nov. 2010, 03:22
salut,
tu n'a pas complètement compris la logique pour la boucle for.
pour inverser son effet il ne faut pas inverser le sens de l'égalité, mais inverser les condition "logiquement"
donc
<?php
$n = 5;
for ($i = 1; $i <= $n; $i++)
{
for ($k = 1; $k <= $i; $k++)
{
echo "*";
}
echo '<br />'."\n";
}?>
devient
<?php
for ($i = $n; $i >0; $i--)
{
for ($k = 1; $k <= $i; $k++)
{
echo "*";
}
echo '<br />'."\n";
}?>
que donne le premier for ?
for ($i = 1; $i <= $n; $i++) => je commence à 1, et je fait autant de boucle que je peut tant que $i est inférieur ou égale = $n et j'ajoute une unité à $i à chaque tour.
for ($i = $n; $i >0; $i--) => je commence à n, et je fait autant de boucle que je peut tant que $i est supérieur à zéro et j'enlève une unité à$i ) chaque tour.
donc inversion de borne et post incrementation devient post décrementation.
après pour le losange je ferais ça
<?php
$largeur=10;
for ($i=1;$i<= $largeur ; $i++) {
echo str_replace(' ',' ',str_pad(str_repeat('*',$i),$largeur,' ',STR_PAD_BOTH)).'<br />';
}
$largeur--;
for ($i=$largeur;$i > 0 ; $i--) {
echo str_replace(' ',' ',str_pad(str_repeat('*',$i),$largeur,' ',STR_PAD_BOTH)).'<br />';
}
?>
a ne pas présenter a un prof de math il est pas droit (normal je sais pas faire de demi espace insécable ^^).
@+