0/5 (5 avis)
Vue 16 771 fois - Téléchargée 326 fois
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Algorithme d'Euclide</title> </head> <body> <fieldset> <legend><b>Données</b></legend> <form method="get"> <!--début du formulaire méthode get On affiche les nombres déjà entrés au cas ou il y a une faute de frappe que l'utilisateur veille modifier! --> Nombre n°1 : <input type="text" name="nbr1" id="nbr1" value="<?php if(isset($_GET['nbr1'])) echo $_GET['nbr1']; ?>" /> <br /> Nombre n°2 : <input type="text" name="nbr2" id="nbr2" value="<?php if(isset($_GET['nbr2'])) echo $_GET['nbr2']; ?>" /> <br /> <input type="submit" value="Calculer !" /> </form> </fieldset> <?php ##Euclide nous dit qu'il faut diviser le nombre le plus grand par le plus petit donc c'est chose faite !## if(isset($_GET['nbr1']) && isset($_GET['nbr2'])) //pour ne pas exécuter le script pour rien ;) { if($_GET['nbr1'] >= $_GET['nbr2']) { $nbr1 = $_GET['nbr1']; $nbr2 = $_GET['nbr2']; } else { $nbr1 = $_GET['nbr2']; $nbr2 = $_GET['nbr1']; } ?> <fieldset> <legend><b>Résultat</b></legend> <!--Affichage de la rédaction--> PGCD( <?=$nbr1?> ; <?=$nbr2?> )<br /> On utilise l'algorithme d'Euclide<br /> Et on regroupe les résultats dans un tableau. <center> <table> <thead> <!-- En-tête du tableau --> <tr> <th>Dividende</th> <th>Diviseur</th> <th>Reste</th> </tr> </thead> <tfoot> <!-- Pied de tableau --> <tr> <th>Dividende</th> <th>Diviseur</th> <th>Reste</th> </tr> </tfoot> <tbody> <!-- Corps du tableau --> <?php $dividende = $nbr1; // le dividende est le premier nombre (nbr1/nbr2 = résultat entier +reste) $diviseur = $nbr2; //le diviseur est donc le second nombre $reste = $nbr1%$nbr2; //Opération de modulo pour obtenir le reste ! echo "<tr> <td>$dividende</td> <td>$diviseur</td> <td>$reste</td> </tr>"; //Affichage while($reste != 0) // On fait l'opération qui suit dans une boucle { /*On décale : le reste devient le diviseur et le diviseur devient le dividende */ $dividende = $diviseur; $diviseur = $reste; echo "<tr> <td>$dividende</td> <td>$diviseur</td>"; //affichage $reste = $dividende%$diviseur; //Modulo echo "<td>$reste</td> </tr>"; //affichage } ?> </tbody> </table> </center> <!--Fin de la rédaction--> Or, dans l'algorithme d'Euclide le PGCD est le dernier reste non nul.<br /> PGCD( <?=$nbr1?> ; <?=$nbr2?> ) = <?=$diviseur?> </fieldset> <? } ?> </body> </html>
10 févr. 2007 à 11:37
Le plus rapide pour afficher des chaines dynamiques c'est avec echo et les virgules sinon.
8 févr. 2007 à 17:47
8 févr. 2007 à 10:35
optimisation:
<?=$nbr1?> => Déconseillé
<?php echo $nbr1; ?> => Mieux ;)
idem pour tous tes <? à remplacer par <?php , car c'est aussi la balise ouvrante XML, voire d'autres encore
revoit aussi un peu xhtml, je suis certain qu'il ne passe pas à la validation (manque d'attributs principallement).
A par ça j'ai rien remarqué d'autres, j'ai juste regardé en vitesse. ;-)
7 févr. 2007 à 16:18
Je pense que la récursivité monte un peu le niveau de la source voir la rend plus complexe pour les débutants... Une boucle étant plus simple !
Merci pour ton commentaire ;)
7 févr. 2007 à 16:06
Il existe pas mal de source traitant du PGCD, j'en avais moi même posté une ( conforme au recomandation de mon prof )
C'est dommage que ta source ne fasse pas intervenir la recursivité.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.