begin process at 2012 02 13 03:06:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > RÉCIPROQUE DU THÉORÈME DE PYTHAGORE

RÉCIPROQUE DU THÉORÈME DE PYTHAGORE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :reciproque, Pythagore, theoreme Niveau :Débutant Date de création :15/12/2007 Date de mise à jour :30/12/2007 09:59:14 Vu :10 094

Auteur : geantfire

Ecrire un message privé
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

 Description

Salut tous, voilà j'ai créé une fonction refaisant la réciproque du théorème de Pythagore. Il suffit d'entrer l'hypothenuse, AB puis CA lors de l'appel de la fonction. La fonction affiche les valeurs entrées, leurs carrés et enfin si le triangle est rectangle

Source

  • <?php function reciproqueDePythagore($hypothenuse, $AB, $CA)
  • {
  • $carre_hypothenuse = $hypothenuse * $hypothenuse;
  • $carre_cotes = $AB * $AB + $CA * $CA;
  • if($carre_hypothenuse == $carre_cotes)
  • {
  • return true;
  • }
  • else
  • {
  • return false;
  • }
  • }
  • //appel de la fonction
  • reciproqueDePythagore(5, 4, 3);
  • ?>
<?php function reciproqueDePythagore($hypothenuse, $AB, $CA)
{
  $carre_hypothenuse = $hypothenuse * $hypothenuse;
  $carre_cotes = $AB * $AB + $CA * $CA;
  if($carre_hypothenuse == $carre_cotes)
  {
    return true;
  }
  else
  {
    return false;
  }
}

//appel de la fonction
reciproqueDePythagore(5, 4, 3);
?>

 Conclusion

Voila donc à la fin je fais appel à la fonction moi pour savoir si ça marche, et normalement oui. Essayez avec n'importe quel nombre vous verrez ça marche.


 Historique

16 décembre 2007 11:06:50 :
Suppression des variables inutiles
16 décembre 2007 11:09:11 :
Suppression des variables de calcul inutiles
24 décembre 2007 10:50:26 :
Mise aux normes WC3 pour les accents.
30 décembre 2007 09:57:59 :
Renvoi d'une valeur boolean.
30 décembre 2007 09:59:14 :
Mise aux normes pour le calcul, suppression de de l'xHTML

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell

 Sources en rapport avec celle ci

Source avec Zip PYTHAGORE, CA RECIPROQUE ET SON THEOREME par samychtran
Source avec Zip LONGUEUR DE L'HYPOTENUSE, LE TRIANGLE EST-IL RECTANGLE PYTHA... par lucas74
MD5 RELATION RECIPROQUE par coucou747
Source avec Zip Source avec une capture LE THÉORÈME DE PYTHAGORE ET SA RÉCIPROQUE par puisea

Commentaires et avis

Commentaire de geantfire le 15/12/2007 19:59:59

C'est ma première source donc je voudrais vos avis s'il vous plait.

Commentaire de codefalse le 16/12/2007 00:37:32 administrateur CS

essaye de séparer le code html de ta fonction

ta fonction retourne une valeur, et tu gere le html en dehors de ta fonction ! :)

Commentaire de webdeb le 16/12/2007 00:47:42

+1 avec Codefalse. C'est la première impression que j'ai eue en voyant ton code...

Commentaire de coucou747 le 16/12/2007 01:32:06 administrateur CS

idem, et afficher des valeurs pleines de chiffres ca sert a rien... autant minimiser le nombre de variables utilisees et ne pas faire de calculs intermediaires

Commentaire de geantfire le 16/12/2007 11:10:22

Désolé mais je prefère la garder comme ça parce que comme je commence le PHP je prefere ne pas me melanger.

Commentaire de yoman64 le 16/12/2007 11:36:00

C'est bien de commencer, mais tu es mieu d'écouter les conseils dès maintenant sinon tu vas être perdu plus tard :P.

Ils ont raison, du html dans une fonction c'est jamais bon puisque ça réduit considérablement sont utilitée... On ne pourrait pas s'en servir dans un autre projet sans la modifier par exemple.


<?php
function reciproqueDePythagore($hypothenuse, $AB, $CA)
{
  $carre_hypothenuse = $hypothenuse * $hypothenuse;
  $carre_cotes = $AB * $AB + $CA * $CA;
  if($carre_hypothenuse == $carre_cotes)
    return true;
  else
    return false;
}


if (reciproqueDePythagore(5, 4, 3))
  echo "Donc ce triangle est rectangle d'apres la réciproque du théorème de Pythagore.";
else
  echo "Donc ce triangle n'est pas rectangle d'apres la réciproque du théorème de Pythagore.";
?>



C'est pas très mélangeant.
Tu peux égallement ajouté un signe "&" devant les arguments dans ta fonction pour récuperé leurs valeur et les afficher en dehors de la fonction

Commentaire de geantfire le 16/12/2007 11:45:52

Humm oui mais la je t'avoue le signe & je comprends pas ce que tu veux en faire.

Commentaire de coucou747 le 16/12/2007 11:48:14 administrateur CS

ici, il n'a probablement pas son utilite

Commentaire de yoman64 le 16/12/2007 13:07:07

Il n'est pas vraiment utile, c'est juste si tu souhaite affiché certaine choses comme tu le fais :

par exemple toi tu affichais dans ta fonction:

echo "<strong>Le carré de l'hypothenuse est égal à</strong> : ".$carre_hypothenuse."<br/>";
echo "<strong>Le carre des deux côtés est égal à</strong> : ".$carre_cotes;


et bien c'est toujours possible en le sortant de la fonction , par exemple:

<?php
function reciproqueDePythagore($hypothenuse, $AB, $CA, &$carre_hypothenuse=0, &$carre_cotes=0)
{
  $carre_hypothenuse = $hypothenuse * $hypothenuse;
  $carre_cotes = $AB * $AB + $CA * $CA;
  if($carre_hypothenuse == $carre_cotes)
    return true;
  else
    return false;
}


$p=reciproqueDePythagore(5, 4, 3,$carre_hypothenuse,$carre_cotes);

echo "<strong>Le carré de l'hypothenuse est égal à</strong> : ".$carre_hypothenuse."<br/>";
echo "<strong>Le carre des deux côtés est égal à</strong> : ".$carre_cotes;


if ($p)
  echo "Donc ce triangle est rectangle d'apres la réciproque du théorème de Pythagore.";
else
  echo "Donc ce triangle n'est pas rectangle d'apres la réciproque du théorème de Pythagore.";


?>

Commentaire de malalam le 17/12/2007 18:00:48 administrateur CS

Hello,

@Yoman, ce n'est pas très joli ce que tu fais là. 2 variables passées dans une fonction que tu vas redéfinir de toute manière, ce juste pour les afficher sans faire de return dessus...
Beaucoup de fonctions PHP retourne une valeur, un tableau, une ressource etc...ce qu'elles doivent retourner en cas de succès, et false en cas d'échec. Autant garder ce principe. Le passage par référence doit être utilisé dans des buts bien précis, quand on a bien une valeur en amont d'une fonction, et que cette fonction DOIT modifier cette valeur en tenant compte de son origine.

<?php
function reciproqueDePythagore($hypothenuse, $AB, $CA) {
$carre_hypothenuse = $hypothenuse * $hypothenuse;
$carre_cotes = $AB * $AB + $CA * $CA;
if($carre_hypothenuse === $carre_cotes) {
return array($carre_hypothenuse, $carre_cotes);
} else {
return false;
}
}


$aReturn=reciproqueDePythagore(5, 4, 3);
if (is_array($aReturn)) {
echo "Donc ce triangle est rectangle d'apres la réciproque du théorème de Pythagore.";
echo "<strong>Le carré de l'hypothenuse est égal à</strong> : ".$aReturn[0]."<br/>";
echo "<strong>Le carre des deux côtés est égal à</strong> : ".$aReturn[1];
} else {
echo "Donc ce triangle n'est pas rectangle d'apres la réciproque du théorème de Pythagore.";
}
?>

Commentaire de geantfire le 17/12/2007 18:04:00

Alors je met quoi ? Une fonction qui renvoi TRUE ou FALSE ou autre chose ??

Commentaire de coucou747 le 17/12/2007 18:15:21 administrateur CS

sur une source qui a l'air d'avoir un point commun avec les mathematiques...

if($carre_hypothenuse === $carre_cotes) {
return array($carre_hypothenuse, $carre_cotes);
} else {
return false;
}

je trouve ce morceau de code marrant, en effet, si deux nombres sont egaux, alors ... on renvoie ... un tableau qui contient deux fois ce nombre... formidable non ?


malalam, de plus, ton === n'a pas sa place ici :

max@debian:~$ php -r '$ab=sqrt(0.5); $bc=sqrt(3.5); $b=$ab*$ab+$bc*$bc; echo $b."\n".gettype($b)."\n"; $c=4; echo (($b==$c)?'OK':'NOK')."\n";'
4
double
OK
max@debian:~$ php -r '$ab=sqrt(0.5); $bc=sqrt(3.5); $b=$ab*$ab+$bc*$bc; echo $b."\n".gettype($b)."\n"; $c=4; echo (($b===$c)?'OK':'NOK')."\n";'
4
double
NOK
max@debian:~$

Commentaire de malalam le 17/12/2007 18:25:55 administrateur CS

@Coucou => le triple égal est de toute manière plus rapide. Et j'attends bien 2 types identiques. Il est anormal de jouer avec des flottants et des entiers sans en tenir compte...mon code était juste un exemple sur les références. Si je faisais un code "matheux", je casterai mes valeurs, perso. Et je n'autoriserai que des flottants dans ce cas précis.

Si j'ai retourné les deux valeurs, c'est parce que je m'attends à ce que l'auteur modifie encore mon code...parce que l'idéal est de trouver le moyen (et c'est fgacile), de retourner les valeurs dans les 2 cas, tout en indiquant que dans un cas on est ok, dans l'autre non. Mais c'est facile, ça coule de source. Ma réponse était juste pour Yoman en fait comme je le dis plus haut : juste un exemple sur comment se passer du passage par référence. Mais le mieux est de retourner tes 2 valeurs dans tous les cas...et c'est plus juste : j'attends 2 valeurs, pas une, le carré des côtés et le carré de l'hypothénuse.

Commentaire de coucou747 le 17/12/2007 18:39:58 administrateur CS

php n'est pas fait pour faire des maths, mon exemple le montre plutot bien... la gestion des variables en php devrait permetre d'eviter les casts, alors qu'en fait...

Commentaire de yoman64 le 17/12/2007 21:18:13

Il est vrai que le passage par référence n'est pas tout a fait adapter a ce cas précis. Mais si l'on souhaite faire ce genre de fonction, le renvois d'un true ou false est le plus approprié que de renvoyer un array.

Je crois que si l'on a besoin de savoir les valeurs des deux carrés, alors il est plus avantageux de les calculer sans faire appel a une fonction qui retourne un array, non? (Je dis ça tout naivement, c'est une question , je veux savoir selon vous si l'interet de retourner un array dans ce cas précis est justifié)

Commentaire de coucou747 le 17/12/2007 21:28:33 administrateur CS

moi ce qui me fait marrer, c'est que quand on regarde le code de depart, et les codes que vous avez envoye pour corriger, le sien correspond au moins a ce qu'on entend des procedures sur les bancs des cours d'infos... (une procedure, c'est un truc qui sert a faire des choses... c'est a peu de choses pres notre definition des procedures)

vous vous codez en php et pas en pascal alors pour vous, une fonction ca calcule (comme en math), ca a des entrees et une sortie, mais n'affiche rien (c'est pas son role), sauf que vos exemples ne sont pas coherents... le sien, correspond par contre a ce que le prof pense des procedures...

enfin j'ai pas dit qu'en php, ce qu'il a fait devait se faire... mais en algorithmique imperative comme ce que l'on voit en cours, c'est correct... contrairement a vos deux exemples...

Commentaire de dvdstory le 18/12/2007 22:08:07

J'en profite pour me faire un peu de pub a propos d'une application web sur le théorème et la réciproque de Pythagore programmé en PHP et en JavaScript (utilisation d'Ajax). Disponible à l'adresse http://www.egrunenberger.com/pythagore/
N'oubliez pas de mettre le mode avancé pour avoir toute les foctions, vous verez c'est bien fait, j'ai pas encore trouvé mieux.

Commentaire de guill76 le 18/12/2007 22:08:28

Salut,
@geantfire=>je sais pas si tu apprends les repères orthonormés( ça fait un peu loin la 4éme pour moi) mais pourquoi ne passerais-tu pas en paramètre les coordonnées des points dans le plan sous forme de tableau? à moins que tu aies fait ce code dans le but d'un exercice bien défini:
Bon comme ça m'amuse un exemple:

$triangle1=array('A'=>array('x'=>1,'y'=>2),
                 'B'=>array('x'=>4,'y'=>5),
                 'C'=>array('x'=>0,'y'=>2)) ;

$triangle2=array('A'=>array('x'=>0,'y'=>0),
                 'B'=>array('x'=>0,'y'=>1),
                 'C'=>array('x'=>1,'y'=>1)) ;
function isRectangle($aPts)
{
  /**
  comme il me semble
  AB² = (Xb-Xa)² + (Yb-Ya)²
  cela revient à écrire $CarreAB=pow(($aPts['B']['x']-$aPts['A']['x']),2)+pow(($aPts['B']['y']-$aPts['A']['y']),2);
  idem Pour BC² et AC²
  */
  $CarreAB=pow(($aPts['B']['x']-$aPts['A']['x']),2)+pow(($aPts['B']['y']-$aPts['A']['y']),2);
  $CarreBC=pow(($aPts['C']['x']-$aPts['B']['x']),2)+pow(($aPts['C']['y']-$aPts['B']['y']),2);
  $CarreAC=pow(($aPts['C']['x']-$aPts['A']['x']),2)+pow(($aPts['C']['y']-$aPts['A']['y']),2);
  /**
  soit tu fais
  */
  return ( ($CarreAB===$CarreBC+$CarreAC || $CarreAC===$CarreBC+$CarreAB) || $CarreBC === $CarreAC+$CarreAB );

  /**
  ou sinon  si tu préfères (c'est peut plus compréhensible sous cette forme)
  */
  
  if ( $CarreAB===$CarreBC+$CarreAC )
    return true;
  if ( $CarreAC===$CarreBC+$CarreAB )
    return true;
  if ( $CarreBC === $CarreAC+$CarreAB )
    return true;
  
  return false;
}

if (isRectangle($triangle1))
echo '<br/>rectangle';
else echo '<br/>pas rectangle';

if (isRectangle($triangle2))
echo '<br/>rectangle';
else echo '<br/>pas rectangle';


Et si tu veux récupérer la longueur de l'hypothénuse eh ben là, faut apprendre à utiliser les variables globales , ou comme l'a dit malalam par reference (je dis ça mais la, t'as le temps pour ça...)

Commentaire de coucou747 le 18/12/2007 22:36:49 administrateur CS

les globales c'est le mal...

n'utilise pas pow pour calculer un carre, pow utilise a^b=e^(b*ln(a)) et c'est moche car tu perds en precision...

pour les === ici tu ne dois pas avoir trop de problemes, du fait du retour de pow...

plutot que de passer des array, tu devrais faire une class Point tout simplement

dvdstory, j'espere que ce que tu dis est faux... j'espere que ce site ne fait pas d'ajax pour ca... ca n'a aucun interret, autant tout faire en javascript...

Commentaire de dvdstory le 18/12/2007 22:52:01

Et si je confirme, j'utilise bien Ajax, seulement du texte, je n'utilise pas la structure xml lorsque je communique avec le serveur.
je suis d'accors on aurait pu le faire en Javascript, mais mon code PHP fait quand même 800 lignes de code pour le mode avancé et 300 pour le mode basic. Je trouve ça quand meme un peu lourd a charger en plus dans le navigateur internet, il y a déja l'index(XHTML), les 2 fichiers css (un pour l'écran et l'autre pour l'imprimante) et les images.
Et cela consomme moins de resource pour l'internaute (mais plus pour le serveur) et consomme moins de bande passante pour les 2 (internaute et serveur).

Commentaire de coucou747 le 18/12/2007 22:55:24 administrateur CS

c'est beaucoup plus lourd pour ton serveur...

Commentaire de guill76 le 18/12/2007 23:05:31

Coucou,
pour la classe point, tu as as raison, mais j'ai mis ce bout de code en connaissance de cause et le but était d'être pedagogue (et pour ne pas brûler les étapes) : A 13 ans tu ne connais pas forcément l'objet (dans 99.9999% des cas).Et pour le === : je n'ai pas mis de sqrt donc aucun pb.
Et en plus dans mon bout de code si j'avais voulu être d'equerre, j'aurais mis un test sur les types car là ça peut renvoyer true si tu ne passes pas un NULL en param

Moi je connaissais même pas la prog à ce t'age là.

Commentaire de coucou747 le 18/12/2007 23:08:21 administrateur CS

quel rapport entre === et sqrt ? le probleme dans mon code n'etait pas sur sqrt... il etait sur le typage plus generalement...

Commentaire de guill76 le 18/12/2007 23:13:02

Oui bon Pour sqrt c'est la rapidité de ma réponse, en fait c'est le fait d'utilser un repère qui permet cela.

Commentaire de geantfire le 19/12/2007 12:58:12

Bah je précise je suis en 4eme au collège et le codage, c'est juste parce que j'adore l'ordinateur et le code. Et non je sais pas ce que c'est les... Les quoi déjà ? Ah oui les reperes orthonomes.

Commentaire de kiki67100 le 20/12/2007 03:13:37

http://fr.wikipedia.org/wiki/Rep%C3%A8re_orthonorm%C3%A9

Commentaire de geantfire le 20/12/2007 17:41:40

Alors, je suis bon dans toutes les matières surtout les maths mais là >< J'ai rien compris

Commentaire de guignol71 le 24/12/2007 10:44:20 5/10

Petit détail : pour tes accents pense à les mettre sous leur valeur ASCII, ex : remplace tes é par &eacute et ce sera un bon début pour être aux normes W3C...
Sinon merde pour ton brevet l'année prochaine.

Commentaire de geantfire le 24/12/2007 10:46:15

Ok je vais changer ça, merci pour le brevet.

Commentaire de yoman64 le 24/12/2007 12:03:14

Salut,
petite précision (désolé, je ne peux pas m'empecher la remarque:)), &eacute; n'est pas une valeur ASCII, la valeur ascii de 'é' est 233, &eacute; et cie sont des "entitées html" (J'ai peut être pas la bonne traduction, je ne connais que le terme anglais html entities). Pour utiliser sa valeur ascii pure tu peux toujours faire &#233;

Mais c'est un bon conseil, encodage correct ou pas, il y a toujours une possibilité que les accents s'affiche mal sous certain navigateur/plateforme, du coup les entitées assure que les accents vont être bien affiché :)

Voici une référence http://en.wikipedia.org/wiki/Html_entities

Commentaire de guignol71 le 24/12/2007 12:13:48

Autant pour moi Yoman64!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème fonctions GD [ par puisea ] Bonsoir, alors je d&#233;bute&nbsp; en fonctions GD pour faire des figures math&#233;matiques simples enfin bref, je test d&#233;ja une partie de code


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,839 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales