Connaitre un coté de l'angle droit (pythagore)

Soyez le premier à donner votre avis sur cette source.

Vue 14 675 fois - Téléchargée 172 fois

Description

Bonjour,
voila, mon code sert à trouver dans un triangle rectangle soit l'hypoténuse grace au 2 autre coté de l'angle droit, soit un coté de l'angle droit grace à l'hypoténuse et un coté de l'angle droit.
Il permet aussi de savoir si un triangle est rectangle

Source / Exemple :


#include <stdio.h>
#include <math.h> 

int main (int argc, char *argv[])
{
long choixmenu = 0 ;
double cote_angle_droit_deux = 0;
double cote_angle_droit = 0;
double resultat = 0;
double hypotenuse = 0;
double racine_un = 0;
double racine_deux = 0;
double racine_trois = 0;
double calcul = 0;
int retour =1 ;

{

printf ("bienvenue dans la calc-theorème de pythagore.\n voulez vous savoir \n \t 1:l'hypoténuse \n \t 2: un coté de l'angle droit \n \t 3: un coté de l'angle droit\n");
scanf ("%ld", &choixmenu);

switch (choixmenu)
{
case 1 :
printf (" vous voulez savoir l'hypoténuse. \n merci de bien vouloir taper un des coté de l'angle droit \n");
scanf ("%lf", &cote_angle_droit);
printf ("\n merci de bien vouloir rentrer le 2ème coté de l'angle droit \n");
scanf ("%lf", &cote_angle_droit_deux);

racine_un = cote_angle_droit * cote_angle_droit;
racine_deux = cote_angle_droit_deux * cote_angle_droit_deux ;
calcul = racine_un + racine_deux ;
resultat = sqrt(calcul);

printf ("\n l'hypoténuse mesure %lf \n \n",resultat );

break;
case 2 :
printf (" vous voulez savoir un coté de l'angle droit. \n merci de bien vouloir taper l'hypoténuse \n");
scanf ("%lf", &hypotenuse);
printf ("\n merci de bien vouloir rentrer le  coté de l'angle droit \n");
scanf ("%lf", &cote_angle_droit);

racine_un = cote_angle_droit * cote_angle_droit ;
racine_deux = hypotenuse * hypotenuse ;
calcul = racine_deux - racine_un ;
resultat = sqrt(calcul);

printf ("\n le coté de l'angle droit mesure %lf \n \n",resultat );
break;
case 3 :
printf ("vous voulez savoir si votre triangle est rectangle. \n merci de bien vouloir rentrer la longueur du plus grand coté. \n ");
scanf ("%lf", &hypotenuse);
racine_trois = hypotenuse * hypotenuse ;
printf ("rentrez un coté de l'angle droit \n ");
scanf ("%lf", &cote_angle_droit);
printf ("rentrez le deuxieme coté de l'angle droit \n ");
scanf ("%lf", &cote_angle_droit_deux);
racine_un = cote_angle_droit * cote_angle_droit ;
racine_deux = cote_angle_droit_deux * cote_angle_droit_deux ;

if (racine_deux + racine_un == racine_trois)
{printf ("le triangle est rectangle \n \n ");
}
if (racine_deux + racine_un != racine_trois)
{
printf ("le triangle n'est pas rectangle \n \n");
}

}

return 0 ;
}
}

Conclusion :


Le programme a été programmé sous linux.
Il y a donc un éxécutable linux, mais pas pour windows( mais code source fournis)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Je pensais qu'il parlait de puissance 2 dans le sens n^2 car sinon ca aurait peu d'interet (voire aucun ^^)

Louis
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Déja cote_angle_droit n'est pas un entier :D.
Elever au carré ne revient pas à multiplier par 2 ;)

En base 10, quand on décale les chiffres vers la gauche, on multiplie par 10.
Ex: 34 -> 340 (=34*10)
En base 2 c'est pareil, sauf qu'on multiplie par 2.


Pour ceux qui découvrent les maths, un ptit cours:

Tout entier N a une écriture écriture dans une base k:
N = a0*k^0 + a1*k^1 + ... + ap*k^p
Pour N=546 en base k=10, a0=6, a1=4, a2=5
546 = 6*1 + 4*10 + 5*100

Si je décale les chiffres de i positions vers la gauche:
a0*k^(0+i) + a1*k^(1+i) + ... + ap*k^(p+i)
= k^i*(a0*k^0 + a1*k^1 + ... + ap*k^p)
= k^i*N
On retrouve la multiplication par k puissance i !

Pour les décalages vers la droite, c'est pareil.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
rrk275 > Si tu lis bien, il parle bien de puissances de 2...
dthuler> Oui c'est bien ca
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

Donc , si je suis le raisonnement, le décalage de bit permet de multiplier/diviser par 2^n un entier non signé... juste? Bon désolé de "poluer" la source avec un commentaire qui s'éloigne un peu du sujet de base mais tant qu'à passer de VB à C, autant que ça serve... ^^
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Nan ca multiplie par 2 ..
prenons int a = 11
(en binaire soit 1 * 2^1 + 1 * 2^0 ou 3 en bon vieux decimal)
faisons a=<<1
on obtient
110
soit 1 * 2^2 + 1 * 2^1 + 0 * 2^0 ou 6
plus géneralement <<1 multiplie par 2 et <<n multiplie par 2^n
tandis que >>n divise par 2^n
sachant x * 1/2^n x* 2^-n on obtient a<<n a>>-n
(cependant l'utilisation des operateurs << et >> ne sont pas "definies" avec des negatifs les resultats seront donc .. imprevisible ^^ )

Louis

PS: pour les puissances ca ne marche donc qu'avec les puissances de 2 ..
Afficher les 27 commentaires

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.