Page 1 sur 1

triangle en php

Posté : 20 nov. 2010, 17:07
par Vertigo61
Bonjour,
je suis débutant en php, pouvez-vous m'aider?

Pour un exercice, on m'a demandé de réaliser des figures géométriques

Par exemple, cellec-ci:
*
**
***
****
*****

J'ai réussi avec ce code:
$n = 5;
for ($i = 1; $i <= $n; $i++)
{
for ($k = 1; $k <= $i; $k++)
{
echo "*";
}
echo '\n';
}

Seulement, je n'arrive pas à faire ces figures (j'ai essayé pendant des heures, j'ai tout tenté, ça ne marche pas!!):
*****
****
***
**
*
Quel paramètre dois-je changer pour inverser la figure?
j'ai changé $i <= $n en $i => $n
j'ai changé $i++ en $i=$i - 1

je pensais que ce code fonctionnerait:
$n = 5;
for ($i = 1; $i <= $n; $i++) //nb de lignes, on rajoute une ligne quand le nb de lignes est inférieur ou = à 5//
{
for ($k = 5; $k => $i; $k=$k-1) //nb d'etoiles, on enlève une étoile quand le nb d'étoiles est supérieur ou = au nb de lignes//
{
echo "*";
}
echo "\n";
}

Mais non!!

Et pour cette figure?
*
* *
* *
* *
* *

Et si on veut reproduire cette figure de façon géométrique de façon à faire un losange?

Merci beaucoup si vous pouvez m'expliquer les bons codes

Re: triangle en php

Posté : 20 nov. 2010, 21:14
par stopher
Salut ,

Test ce code , j'ai pas testé ..

Dans un sens
$i = 5;
while($i>0){
    echo str_repeat("*", $i--);
    echo '<br/>';
}
et dans l'autre
$i = 1;
while($i<=5){
    echo str_repeat("*", $i++);
    echo '<br/>';
}
Ch.

Re: triangle en php

Posté : 22 nov. 2010, 22:51
par vertigo61
ça marche bravo! et merci
c'est beaucoup plus simple
mais je dois le faire dans les 2 sens avec des boucles for

Re: triangle en php

Posté : 23 nov. 2010, 14:11
par popy
Ca va être dûr, va falloir réfléchir.

Et si tu n'y arrive il faudra probablement changer d'orientation.

Re: triangle en php

Posté : 23 nov. 2010, 21:56
par Vertigo
bah oui c'est pas facile, hein?

merci de ton aide mais c pas celle que j'attendais Maître du phpinfou

mais as-tu déjà su faire les triangles en php, et avec des boucles for() ?

Re: triangle en php

Posté : 24 nov. 2010, 03:22
par moogli
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(' ','&nbsp;',str_pad(str_repeat('*',$i),$largeur,' ',STR_PAD_BOTH)).'<br />';
}
$largeur--;
for ($i=$largeur;$i > 0 ; $i--) {
	echo str_replace(' ','&nbsp;',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 ^^).

@+

Re: triangle en php

Posté : 24 nov. 2010, 23:00
par vertigo61
Merci beaucoup