begin process at 2012 02 12 19:42:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CONNAITRE UN COTÉ DE L'ANGLE DROIT (PYTHAGORE)

CONNAITRE UN COTÉ DE L'ANGLE DROIT (PYTHAGORE)


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :pythagore, triangle, rectangle Niveau :Débutant Date de création :19/11/2006 Date de mise à jour :20/11/2006 18:05:41 Vu / téléchargé :11 484 / 102

Auteur : pipolasmimi38

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

 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

  • #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 ;
  • }
  • }
#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)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • pythagore.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 507 octets
  • theromedepythagoreTélécharger ce fichier [Réservé aux membres club]7 910 octets

Télécharger le zip


 Historique

19 novembre 2006 15:09:54 :
ajout d'une fonction permettant de savoir si le triangle est rectangle
19 novembre 2006 15:14:47 :
ajout de description
20 novembre 2006 18:04:18 :
amélioration code source. ATTENTION, FICHIER ZIP NON À JOUR
20 novembre 2006 18:05:41 :
j'avais oublier un point virgule

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip Source avec une capture DESSIN D'ARBRES par JCDjcd
Source avec Zip INTÉRÊT DE L’UTILISATION D’UNE CLASSE ABSTRAITE [DEV-CPP] par stenka

Commentaires et avis

Commentaire de Ombitious_Developper le 19/11/2006 13:12:05

Salut:

Tu peux généraliser ton programme pour n'importe quel type de triangle en utilisant le théréoreme du mathématicien Arabe El Kashi.

Commentaire de pipolasmimi38 le 19/11/2006 13:13:40

oui, mais je ne connais pas encore cette formule...

Commentaire de Ombitious_Developper le 19/11/2006 13:45:13

Salut:

http://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d'Al-Kashi

Commentaire de vecchio56 le 19/11/2006 14:58:20 administrateur CS

Pourquoi utiliser la fonction pow pour élever un nombre au carré? Il est préférable de faire une multiplication
Tu devrais aussi controler ce qui est entré par l'utilisateur, car actuellement, tu risques de calculer une racine carrée négative
Pense aussi à permettre à l'utilisateur de terminer ton programme autrement que par Ctrl+C

Commentaire de pipolasmimi38 le 19/11/2006 15:12:39

Bon, j'ai rajouté une fonction permettant de savoir si un tria,gle est rectangle d'après le théorème de pythagore.
Par contre l'éxécutable n'est pas à jour.
Pour la fonction pow, je trouce que c'est le plus simple.
Sinon le programme se termine tout seul, mais je vais le mettre à jour pour permettre à l'utilisateur de recommencer ou de quitter.

Commentaire de vecchio56 le 19/11/2006 16:00:39 administrateur CS

racine_un = pow(cote_angle_droit, 2);
racine_un = cote_angle_droit * cote_angle_droit;
En qui le pow est-il plus simple? En tous cas il est certainement plus lent

Pardon pour la terminaison, j'avais cru qu'il y avait un boucle infini

Commentaire de pipolasmimi38 le 19/11/2006 16:21:57

tu as certainement raison, mais je ne vois pas ce que ca apporterait de faire une multiplication.
Niveau rapidité, je ne pensse pas que l'on voit la différence...

Commentaire de cosmobob le 19/11/2006 19:27:57

j'suis impressionné par cette source ;))

Commentaire de laurent1024 le 19/11/2006 19:41:16

pour faire la puissance de 2, si tu veux tu peux aussi faire cote_angle_droit << 1; (decalage de bits)

Commentaire de Ombitious_Developper le 19/11/2006 19:45:33

Salut:

Dans quel sens tu es imprissionné par cette source?
En regardant l'age de pipolasmimi38 on a qu'à l'encourager.

Commentaire de vecchio56 le 19/11/2006 20:11:43 administrateur CS

laurent1024> Non, le décalage de bits ne marchera pas pour un double :)

Commentaire de laurent1024 le 19/11/2006 20:23:35

vecchio>Pardon j'avais pas fait gaffe que c'etait des doubles.

Commentaire de max12 le 19/11/2006 21:00:43 administrateur CS

Cette source ne restera pas longtemps :S

Commentaire de Galmiza le 19/11/2006 21:18:34

Pour faire pow(a,b), le CPU fait comme suit:
a^b = exp(ln(a^b)) = exp(b*ln(a))
Donc se tape un calcul de logarithme népérien et une exponentielle ! Fonctions qui elles-mêmes font appel à des quantités d'additions et de multiplications.

Evidemment, on s'en tape ici.
Mais généralement ceux qui ont choisi d'apprendre le C et pas un langage plus facile, l'on choisi pour pouvoir réaliser des codes rapides, donc ça nous fait assez peur :D de voir faire pow(a,2) plutôt que a*a !

Donc ne t'étonnes pas qu'on chipotte dessus ;).

Bonne continuation !

Commentaire de badrbadr le 20/11/2006 02:42:00

le compilateur ne fait pas l'optimisation?

Commentaire de pipolasmimi38 le 20/11/2006 17:55:18

merci de vos commentaire.
J'ai que 14 ans, et c'est le premier programme que je programme sous linux, ce qui a entrainé quelque réaménagement du code (syteme pause...)
Je vais changer le pow... en multiplication.

et pour certaine mauvaise note, ce programme peut etre utile

Commentaire de pipolasmimi38 le 20/11/2006 17:56:35

je me suis trompé, ce n'est pas :
pour certaine mauvaise note...
mais
pour certaine mauvaise langue

Commentaire de Cyr62110 le 20/11/2006 19:01:44

J'ai regardé un peu ton menu, tu devrait plutot ecrire :
do {# 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);} while (choixmenu < 1 ||choixmenu > 3);
Cela évitera les problèmes que j'ai eu à mes début en programmation.
Car sinon si un utilisateur repond 4,tu as une sortie prématurée de programme.
Bye et bonne continuation.

Commentaire de dthuler le 21/11/2006 21:10:20

Ben, moi je dis merci... voilà le genre de prog' qui va m'aider à me mettre dans le bain de C++
Bon code, encore merci!
David

Commentaire de pipolasmimi38 le 22/11/2006 13:07:15

merci pour ton commentaire dthuler.
Tu verras, c'est un programme assez sympa à faire, et ce n'est pas très difficile.
Au cas ou tu ne connaitrais pas, voici un bon site pour apprendre le c/c++:

http://www.siteduzero.com/index.php  

merci aussi à toi cyr62110, je vais regarder ca ce week-end.

Commentaire de rrk275 le 23/11/2006 19:34:44

pour faire la puissance de 2, si tu veux tu peux aussi faire cote_angle_droit << 1; (decalage de bits)
Lol ^^
( mieux vaut en rire qu'en pleurer ?? )

Commentaire de vecchio56 le 23/11/2006 19:39:02 administrateur CS

Qu'est ce qu'il y a de drole? Ca marche pour les entiers

Commentaire de rrk275 le 23/11/2006 19:46:17

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

Commentaire de dthuler le 23/11/2006 20:17:57

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

Commentaire de vecchio56 le 23/11/2006 20:19:55 administrateur CS

rrk275 > Si tu lis bien, il parle bien de puissances de 2...
dthuler> Oui c'est bien ca

Commentaire de Galmiza le 23/11/2006 20:34:48

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.

Commentaire de rrk275 le 23/11/2006 20:59:11

Je pensais qu'il parlait de puissance 2 dans le sens n^2 car sinon ca aurait peu d'interet (voire aucun ^^)

Louis

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

programme triangle rectangle ou non [ par Phil974m ] j'ai un petit soucis avec mon programme qui ne gère pas correctement les données saisiej'ai fait un petit programme demandé dans mon bts iris qui cher programme qui affiche un triangle [ par laguchori ] Bonjour , J'ai un projet à faire qui consiste à créer une classe ligne et la tracer à partir de deux point et ensuite créer une Class triangle dérivée Afficher unTriangle de Pascal en language C [ par shaqe80 ] shaqe80,s'il vous y aurait il quelqu'un de bienveillant pour m'aider à rabibocher ce programme?#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#defin comment je peut svp conner ou organizer ces cordonnés d'un rectangle en c++ [ par YuseFdev ] salut  ----svp--    en c++je construie une classe rectangle  quia 4 variable represente les cordonnéscomment je peut conner ou organizer ces cordonnés Dessiner un rectangle (mais aussi un carré) en mode console langage C [ par DeathRavage ] Problème : J'ai un soucis à propos de la prise en compte de la taille de ma verticale, elle n'est pas prise en compte. J'ai essayé d'arranger les chos Dessiner un rectangle dans la fenêtre principale de l'application [ par 27adri27 ] Bonjour, Je suis nouveau sur le forum, alors excuser moi si je n'adopte pas la bonne méthode... Voilà, je développe une application en C++ avec une Du texte sur plusieurs lignes [ par mohdaef ] Bonjour à tous, Je souhaiterai écire un chaine de caractères donnée à l'intérieur d'un rectangle aux dimensions fixes. Le problème est que lorsque la Detecter la presence d'un triangle GLUT [ par aerocrazy ] Bonjour, actuellement je travail sur le maillage d'un nuage de points en 3D avec GLUT. Le problème est que le maillage est incomplet, il y a de nombre rectangle en premier plan [ par minetgrostiti ] Bonjour En c#: J'ai une pictureBox incluant une image le tout dans Form1 Je crée un rectangle (DrawRectangle) pour délimiter une zone de contrôle sur


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,624 sec (4)

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