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 ;
} |
Partager