Mais ou se trouve l'erreur!?
Bonjour à tous,
Dans mon cours, à l'université, de programmation 101, on me demande de créer un programme pour calculer plusieurs variables d'un lancement de missile. Cependant, mon programme me donne un résultat aberrant et je ne trouve pas ou est le problème. J'ai eu beau regarder mais je n'ai aucune idée d'ou elle se trouve :(. Voici l'énoncé du problème :
Sujet : la balistique
Vous devez faire l’analyse, la conception et l’implantation d’un programme qui servira a calculer l’altitude atteinte par un projectile, la distance horizontale qu’il parcourt ainsi que le temps qu’il met a retomber. Le projectile est tire par un lanceur (personne, fusil, canon,...) et n’est pas autopropulse. Nous ne considerons pas dans le calcul la force de friction ni les variations dans la force d’attraction. Comme nous simplifions le probleme, nous allons induire une erreur dans notre calcul. Le programme devra donc corriger ses resultats en y additionnant une valeur correspondant a une certaine marge d’erreur specifiee comme un poucentage des resultats. Cette marge d’erreur est specifiee par l’utilisateur. Le programme prendra en entree les vitesses verticales et horizontales du projectile (en milles/heure), la force d’attraction (en metres/seconde2) ainsi que le pourcentage estimee de l’erreur. Le programme devra afficher comme resultats l’altitude et la distance en metres,
ainsi que le temps en annees, jours, heures, minutes et secondes.
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
| /**
Fichier : Balistique.cpp
Calcul de l'altitude, la distance verticale, la distance horizontale et le temps de chute d'un projectile.
Auteur : Julien Parent-Trudeau
Matricule : XXXXXXXXX
Date de creation : 15 septembre 2009
Entrees :
(clavier) Vitesse verticale (reel) (milles/heure)
(clavier) Vitesse horizontale (reel) (milles/heure)
(clavier) Force dattraction (reel) (mètre/(secondes*secondes)
(clavier) Erreur en poucentage (reel)
Sorties :
(ecran) Altitude en metres (reel)
(ecran) Distance horizontale en metres (reel)
(ecran) Temps en mois, jour, heure, minute, seconde (5 entiers)
*/
/// Bibliotheques utilisees ou utiles
#include
#include
using namespace std;
int main()
{
/// Declaration des constantes
const float MILLE_KILO = 0.62 ; //conversion d'un kilometre en mille
const int METRE_KILO = 1000 ; //conversion d'un kilometre en metre
const int SEC_MIN = 60 ; //conversion d'une minute en seconde
const int MIN_HEURE = 60 ; //conversion d'une heure en minute
const int HEURE_JOUR = 24 ; //conversion d'un jour en heure
const int JOUR_ANNEE = 364 ; //conversion d'une annee en jour
/// Declaration des variables
/// Entrees
float vitesse_verticale_mille_heure, vitesse_horizontale_mille_heure, force_attraction, erreur_pourcentage ;
/// Sorties
int altitude_maximale_corrigee ;
int distance_horizontale ;
int temps_annee ;
int temps_jour ;
int temps_heure ;
int temps_minute ;
int temps_seconde ;
/// Variables intermédiaires
float vitesse_verticale_kilo_heure ;
float vitesse_horizontale_kilo_heure ;
float vitesse_verticale_metre_heure ;
float vitesse_horizontale_metre_heure ;
float vitesse_verticale_metre_seconde ;
float vitesse_horizontale_metre_seconde ;
int altitude_maximale ;
int temps_corrige ;
int temps_retombee ;
int temps_retombee_corrigee ;
int temps_restant ;
///--------------------------------------------------------------------------------
/// 1 Lecture des entrees
///--------------------------------------------------------------------------------
/// 1.1 Lecture de la vitesse verticale V0
cout << "Quelle est la vitesse verticale ?" << endl ;
cin >> vitesse_verticale_mille_heure ;
/// 1.2 Lecture de la vitesse horizontale H0
cout << "Quelle est la vitesse horizontale ?" << endl ;
cin >> vitesse_horizontale_mille_heure ;
/// 1.3 Lecture de la force d'attraction
cout << "Quelle est la force d'attraction ?" << endl ;
cin >> force_attraction ;
/// 1.4 Lecture du pourcentage d'erreur
cout << "Quel est le pourcentage d'erreur ?" << endl ;
cin >> erreur_pourcentage ;
///--------------------------------------------------------------------------------
/// 2 Convertire les vitesses en metre par secondes
///--------------------------------------------------------------------------------
/// 2.1 Transformer vitesse verticale de milles/heure en kilometres/heure
vitesse_verticale_kilo_heure = vitesse_verticale_mille_heure / MILLE_KILO ;
/// 2.2 Transformer vitesse horizontale de milles/heure en kilometres/heure
vitesse_horizontale_kilo_heure = vitesse_horizontale_mille_heure / MILLE_KILO ;
/// 2.3 Transformer vitesse verticale de kilometres/heure en metres/heure
vitesse_verticale_metre_heure = vitesse_verticale_kilo_heure * METRE_KILO ;
/// 2.4 Transformer vitesse horizontale de kilometres/heure en metres/heure
vitesse_horizontale_metre_heure = vitesse_horizontale_kilo_heure * METRE_KILO ;
/// 2.5 Transformer vitesse verticale de metres/heure en metres/seconde
vitesse_verticale_metre_seconde = vitesse_verticale_metre_heure * MIN_HEURE * SEC_MIN ;
/// 2.6 Transformer vitesse horizontale de metres/heure en metres/seconde
vitesse_horizontale_metre_seconde = vitesse_horizontale_metre_heure * MIN_HEURE * SEC_MIN ;
///--------------------------------------------------------------------------------
/// 3 Calculer l'altitude maximale
///--------------------------------------------------------------------------------
/// 3.1 Calculer laltitude
altitude_maximale = 0.5 * (( vitesse_verticale_metre_seconde * vitesse_verticale_metre_seconde ) / force_attraction ) ;
/// 3.2 Ajouter l'erreur
altitude_maximale_corrigee = altitude_maximale + ( altitude_maximale * erreur_pourcentage ) ;
///--------------------------------------------------------------------------------
/// 4 Calculer le temps de retombee
///--------------------------------------------------------------------------------
/// 4.1 Calculer le temps
temps_retombee = 2 * vitesse_verticale_metre_seconde / force_attraction ;
/// 4.2 Ajouter l'erreur
temps_retombee_corrigee = temps_retombee + ( temps_retombee * erreur_pourcentage ) ;
///--------------------------------------------------------------------------------
/// 5 Calculer distance parcourue
///--------------------------------------------------------------------------------
distance_horizontale = temps_retombee_corrigee * vitesse_horizontale_metre_seconde ;
///--------------------------------------------------------------------------------
/// 6 Convertir le temps en annees-jours-heures-minutes-secondes
///--------------------------------------------------------------------------------
/// 6.1 Calculer le nombre dannees
temps_annee = temps_retombee_corrigee / ( JOUR_ANNEE * HEURE_JOUR * MIN_HEURE * SEC_MIN ) ;
/// 6.2 Calculer le nombre de secondes restantes
temps_restant = temps_retombee_corrigee % ( JOUR_ANNEE * HEURE_JOUR * MIN_HEURE * SEC_MIN ) ;
/// 6.3 Calculer le nombre de jours
temps_jour = temps_restant / ( HEURE_JOUR * MIN_HEURE * SEC_MIN ) ;
/// 6.4 Calculer le nombre de secondes restantes
temps_restant = temps_restant % ( HEURE_JOUR * MIN_HEURE * SEC_MIN ) ;
/// 6.5 Calculer le nombre dheures
temps_heure = temps_restant / ( MIN_HEURE * SEC_MIN ) ;
/// 6.6 Calculer le nombre de secondes restantes
temps_restant = temps_restant % ( MIN_HEURE * SEC_MIN ) ;
/// 6.7 Calculer le nombre de minutes
temps_minute = temps_restant / ( SEC_MIN ) ;
/// 6.8 Calculer le nombre de secondes restantes
temps_seconde = temps_restant % ( SEC_MIN ) ;
///--------------------------------------------------------------------------------
/// 7 Afficher la distance sur lecran
///--------------------------------------------------------------------------------
/// 7.1 Afficher laltitude
cout << "L'altitude maximale atteinte est de " << altitude_maximale_corrigee << endl ;
/// 7.2 Afficher la distance
cout << "La distance totale parcourue est de " << distance_horizontale << endl ;
/// 7.3 Afficher le nombre dannees
cout << "Le temps de vol total est de " << temps_annee << "annee(s) " ;
/// 7.4 Afficher le nombre de jours
cout << temps_jour << "jours " ;
/// 7.5 Afficher le nombre dheures
cout << temps_heure << "heures " ;
/// 7.6 Afficher le nombre de minutes
cout << temps_minute << "minutes " ;
/// 7.7 Afficher le nombre de secondes
cout << temps_seconde << "secondes" << endl ;
return 0 ;
} |
Quelqu'un voit-il à l'œil nu ou pourrait se trouver le problème!?