begin process at 2008 08 20 12:39:51
1 228 823 membres
193 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALGORITHME D'EUCLIDE OU DIVISIONS SUCCÈSSIVES : CALCULE DU PGCD EN BONNE FORME !


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : algorithme, euclide, pgcd Niveau : Débutant Date de création : 07/02/2007 Date de mise à jour : 07/02/2007 15:47:41 Vu / téléchargé: 5 670 / 167

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Salutations ! Je vous présente ce code (qui est ma première contribution pour phpcs).

je l'ai codé suite à un cours sur le PGCD (Plus Grand Commun Diviseur) en classe de 3ème.

J'ai regardé les sources sur la question et je me suis aperçu qu'aucune ne rédigeait comme notre professeur nous l'a demandée...

Voici donc ma source basée sur mes connaissances !

Source

  • <!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>
<!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>

Conclusion

Ce script n'est pas optimisé mais le sera bientôt (?)
L'exemple en ligne ici : http://phenix-aventure.fr/euclide.php


Interceptor alias Canibale
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

07 février 2007 15:47:43 :
Petites erreurs d'orthographes vu au moment de la validation...
  • signaler à un administrateur
    Commentaire de iow4 le 07/02/2007 16:06:35

    Salut,

    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é.

  • signaler à un administrateur
    Commentaire de canibale le 07/02/2007 16:18:20

    Surement les profs qui ne font pas faire la rédaction pareil...

    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 ;)

  • signaler à un administrateur
    Commentaire de TheSin le 08/02/2007 10:35:25

    sympa le code, ça faisait longtemps que j'avais plus vu de PGCD lol
    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. ;-)

  • signaler à un administrateur
    Commentaire de canibale le 08/02/2007 17:47:38

    Ok merci (pourtant dans mon livre ou j'ai appris php ils disaient que <?=$variable?> était plus rapide que <?php echo $variable; ?>

  • signaler à un administrateur
    Commentaire de iow4 le 10/02/2007 11:37:41

    Oui peut être ici dans le cas ou tu ouvre une balise Php pour afficher chaque variable. Ca a beau être plus rapide si TheSin dit que c'est pas conseillé alors je pense que tu devrais oublier ça.
    Le plus rapide pour afficher des chaines dynamiques c'est avec echo et les virgules sinon.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS