boucle while: table de multiplication

boucle while: table de multiplication - PHP - Programmation

Marsh Posté le 21-03-2006 à 23:46:12    

je tente de composer un petit script qui me donnerais les tables de multiplication ( 10 colonnes/ 10 lignes) et celà avec des boucles while plutot que for, mais je bloque ( ne riez pas!!)
 
 
voilà mon script:

Spoiler :


 
$i=1;
$j=1;
echo "<table border=1><th>x</th>";
while($i<=10) {echo "<th>".$i."</th>";$i++;
}
while($j<=10) {echo "<tr><th>".$j."</th></tr>";$j++; "<td>".$i*$j."</td>";}
// remplissage de la table
echo "</tr>";
echo"</table>";
?>


 
cordialement,


---------------
blog Bretagne
Reply

Marsh Posté le 21-03-2006 à 23:46:12   

Reply

Marsh Posté le 22-03-2006 à 00:13:42    

pi être parce que faut imbriqué 2 while et que là, c'est pas le cas ?


Message édité par zapan666 le 22-03-2006 à 00:13:58

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-03-2006 à 00:21:37    

explique ?


---------------
blog Bretagne
Reply

Marsh Posté le 22-03-2006 à 00:24:31    

Code :
  1. $i=1;
  2. $j=1;
  3. echo "<table border=1><th>x</th>";
  4. while($i<=10) {
  5.         echo "<tr><th>".$i."</th>";
  6.         while($j<=10) {
  7.                 echo "<td>".$i*$j."</td>";
  8.                 $j++;
  9.         } // fin while j
  10. echo "</tr>";
  11.          $i++;
  12. } // fin while i
  13. // remplissage de la table
  14. echo"</table>";
  15. ?>


 
de toute façon, tu prend ton algo avec les for, tu remplice les for par des while

Code :
  1. for (i = 0 ; i < 10 ; i++) {
  2. // blabla
  3. }


 
devient
 

Code :
  1. i = 0
  2. while ( i < 10) {
  3. // blabla
  4. i++
  5. }

Message cité 1 fois
Message édité par zapan666 le 22-03-2006 à 00:26:33

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-03-2006 à 01:01:07    

zapan666 a écrit :

Code :
  1. $i=1;
  2. $j=1;
  3. echo "<table border=1><th>x</th>";
  4. while($i<=10) {
  5.         echo "<tr><th>".$i."</th>";
  6.         while($j<=10) {
  7.                 echo "<td>".$i*$j."</td>";
  8.                 $j++;
  9.         } // fin while j
  10. echo "</tr>";
  11.          $i++;
  12. } // fin while i
  13. // remplissage de la table
  14. echo"</table>";
  15. ?>


 
de toute façon, tu prend ton algo avec les for, tu remplice les for par des while

Code :
  1. for (i = 0 ; i < 10 ; i++) {
  2. // blabla
  3. }


 
devient
 

Code :
  1. i = 0
  2. while ( i < 10) {
  3. // blabla
  4. i++
  5. }



 
 
 
je viens d'imbriquer els boucles whiles et j'ai rien qu'une ligne!....

Code :
  1. <?
  2. $i=1;
  3. $j=1;
  4. echo "<table border=1><th>x</th>";
  5. //creation premiere ligne
  6. while($i<=10) {echo "<th>".$i."</th>";$i++;
  7. }
  8. //boucle contenu de la table
  9. while($i<=10) {echo "<th>".$i."</th>";$i++;
  10. //premiere colone
  11. while($j<=10) {echo "<tr><th>".$j."</th></tr>";
  12. ; "<td>".$i*$j."</td>";$j++;
  13. // remplissage de la table
  14. }
  15. echo "</tr>";
  16. }
  17. echo"</table>";
  18. ?>


---------------
blog Bretagne
Reply

Marsh Posté le 22-03-2006 à 01:05:14    

shyboy a écrit :

je viens d'imbriquer els boucles whiles et j'ai rien qu'une ligne!....

Code :
  1. <?
  2. $i=1;
  3. $j=1;
  4. echo "<table border=1><th>x</th>";
  5. //creation premiere ligne
  6. while($i<=10) {echo "<th>".$i."</th>";$i++;
  7. }
  8. //boucle contenu de la table
  9. while($i<=10) {echo "<th>".$i."</th>";$i++;
  10. //premiere colone
  11. while($j<=10) {echo "<tr><th>".$j."</th></tr>";
  12. ; "<td>".$i*$j."</td>";$j++;
  13. // remplissage de la table
  14. }
  15. echo "</tr>";
  16. }
  17. echo"</table>";
  18. ?>



Ce serait une bonne idée d'apprendre le HTML je pense.
 
Dans la mesure où tu ne crées jamais de lignes (row == tr), il ne vas sûrement pas en afficher.
 
Mais bon, PHP-Staÿle on fait n'importe quoi et on se demande pourquoi ça marche pas, ça nous change [:linuxine]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 22-03-2006 à 10:39:49    

Exemple de table de 3:

Code :
  1. <table>
  2. <tr><td>1*1=1</td><td>2*1=2</td><td>3*1=3</td></tr>
  3. <tr><td>1*2=2</td><td>2*2=4</td><td>3*2=6</td></tr>
  4. <tr><td>1*3=3</td><td>2*3=6</td><td>3*3=9</td></tr>
  5. </table>


 
Ok, on factorise les rangs:

Code :
  1. <table>
  2. <?
  3. for($i=1;$i<=3;$i++)
  4. {
  5.   echo "<tr><td>1*$i=".(1*$i)."</td><td>2*$i=".(2*$i)."</td><td>3*$i=".(3*$i)."</td></tr>\n";
  6. }
  7. ?>
  8. </table>


 
Ok, on factorise les colonnes:

Code :
  1. <table>
  2. <?
  3. for($j=1;$j<=3;$j++)
  4. {
  5.   echo "<tr>";
  6.   for($i=1;$i<=3;$i++)
  7.   {
  8.     echo "<td>$j*$i=".($j*$i)."</td>";
  9.   }
  10.   echo "</tr>\n";
  11. }
  12. ?>
  13. </table>


 
Ok, on ajoute les entêtes, et table par 10:

Code :
  1. <table border=1>
  2. <?
  3. $max=10;
  4. echo "<caption>Table de multiplication par $max</caption>";
  5. echo "<tr><th></th>";
  6. for($i=1;$i<=$max;$i++)
  7.   echo "<th>$i</th>";
  8. echo "</tr>\n";
  9. for($j=1;$j<=$max;$j++)
  10. {
  11.   echo "<tr><th>$j</th>";
  12.   for($i=1;$i<=$max;$i++)
  13.   {
  14.     echo "<td>".($j*$i)."</td>";
  15.   }
  16.   echo "</tr>\n";
  17. }
  18. ?>
  19. </table>


Message édité par nargy le 22-03-2006 à 10:47:21
Reply

Marsh Posté le 22-03-2006 à 11:04:41    

merci , mais avec la boucle while?


---------------
blog Bretagne
Reply

Marsh Posté le 22-03-2006 à 11:11:32    

Ca ressemble un peu à un exercice de base de la boucle while, cà.
 
Donc, je te renvoie vers la doc de l'instruction while
 
Surtout que ce n'est pas trop compliqué de remplacer un for par un while ( surtout aussi simple que ca )


Message édité par Lord II le 22-03-2006 à 11:13:58
Reply

Marsh Posté le 22-03-2006 à 11:13:31    

Code :
  1. $m = 10; //on fera un tableau jusqu'a la table de 10
  2. echo "<table border='1'>"; //j'ouvre le tableau
  3. echo "<tr>"; //j'ouvre une ligne
  4. echo "<caption>Table de multiplication par ".$m."</caption>";
  5. echo "<th></th>"; //cellule vide (en haut à gauche)
  6. //on va écrire la première ligne du tableau, c'est un ligne d'entête sans valeurs calculées
  7. $i = 1;
  8. while ($i<=$m){
  9.     echo "<th>".$i."</th>";
  10.     $i++;
  11. }
  12. echo "</tr>"; //je referme la première ligne
  13. //je vais compléter le tableau en affichant une colonne avec les valeurs non calculées et le corps du tableau avec les valeurs calculées
  14. $x = 1
  15. while($x<=$m){
  16.     echo "<tr>"; //a chaque boucle j'ouvre une ligne
  17.     echo "<th>".$x."</th>"; //j'affiche la valeur dans la première case
  18.     //je vais parcourir les chiffres de 1 à 10 pour les multiplier par la valeur de la ligne courante ($x)
  19.     $y = 1;
  20.     while($y<=$m){
  21.         echo "<td>".($x*$y)."</td>"; //à chaque boucle j'ouvre une case, j'affiche le résultat de la multiplication et je referme la case
  22.     $y++;
  23.     }
  24.     echo "</tr>"; //je ferme la ligne
  25.     $x++;
  26. }


 
[edit] ah merde je viens de me rendre compte que c'est exactement ce qu'a fait Nargy !
Mais pourquoi ce borner à faire des parcours totaux en while, c'est l'instruction for pour les totaux et while c'est pour les parcours partiels voyons ![/edit]


Message édité par Yertle le 22-03-2006 à 11:20:51
Reply

Marsh Posté le 22-03-2006 à 11:13:31   

Reply

Marsh Posté le 22-03-2006 à 11:52:25    

shyboy a écrit :

merci , mais avec la boucle while?


C'est pas un while qu'il faut utiliser mais un for. Point :o

Reply

Marsh Posté le 22-03-2006 à 12:15:56    

oui , le for pas de problème, mais je dois la faire avec une boucle while!


---------------
blog Bretagne
Reply

Marsh Posté le 22-03-2006 à 12:19:00    

si t'est pas capable de transformer une boucle for en boucle while arrette tout de suite la programmation...
en plus qq'un t'as expliqué comment faire et t'as filé le lien vers la doc !


---------------
D3
Reply

Marsh Posté le 22-03-2006 à 12:25:22    

shyboy a écrit :

oui , le for pas de problème, mais je dois la faire avec une boucle while!


 
Ah c'est un devoir à faire ?
Tu es donc hors-charte mon gars  :sarcastic:  

Reply

Marsh Posté le 22-03-2006 à 12:33:00    

smaragdus a écrit :

Ah c'est un devoir à faire ?
Tu es donc hors-charte mon gars  :sarcastic:


 
 
 
C'est bien ce que j'avais présentit

Reply

Marsh Posté le 22-03-2006 à 12:42:59    

Lord II a écrit :

C'est bien ce que j'avais présentit


ouais, bien vu :jap:

Reply

Marsh Posté le 22-03-2006 à 12:43:10    

j'ai passé l'age de faire des devoirs, mais je me devais de comprendre les boucles histoire de ne pas mourrir complétement idiot, désolé de n'être pas  compétent  en prog , j'en suis le premier peiné croyez moi!


---------------
blog Bretagne
Reply

Marsh Posté le 22-03-2006 à 12:51:19    

shyboy a écrit :

j'ai passé l'age de faire des devoirs,

Bien sûr...  :sarcastic:  

Citation :

mais je me devais de comprendre les boucles histoire de ne pas mourrir complétement idiot, désolé de n'être pas  compétent  en prog , j'en suis le premier peiné croyez moi!

Et bien le 1er truc à comprendre dans les boucles, c'est de savoir quand faire un for et quand faire un while.
Dans ton cas, c'est un for  :sarcastic:


Message édité par smaragdus le 22-03-2006 à 12:57:50
Reply

Marsh Posté le 22-03-2006 à 13:08:16    

merci pour vos conseils , je retourne dans mon manuel...pour comprendre l'imbrication des boucles, c'est pas gagné!


---------------
blog Bretagne
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed