IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Mais ou se trouve l'erreur!?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 d’attraction (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 l’altitude
    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 d’annees
    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 d’heures
    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 l’ecran
    ///--------------------------------------------------------------------------------
    /// 7.1 Afficher l’altitude
    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 d’annees
    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 d’heures
    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!?

  2. #2
    screetch
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    altitude_maximale = 0.5 * (( vitesse_verticale_metre_seconde * vitesse_verticale_metre_seconde ) / force_attraction ) ;
    ici vitesse_verticale_metre_seconde donne deja un truc en 10^8, en passant au carré ca dépasse allegremment les 4 milliards qui tiennent dans un entier, ce qui cause un overflow dans la variable altitude_maximale

  3. #3
    screetch
    Invité(e)
    Par défaut
    en fait je vois mal le raisonnement qui te donne cette formule

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Donc en fait, dans la suite du problème, on dit que pour calculer l'altitude maximale, je dois appliquer la formule suivante : Altitude max = .5 × Vitesse verticale2 / force gravitationnelle. Le 2 à côté de vitesse verticale veut dire "au carré"

  5. #5
    screetch
    Invité(e)
    Par défaut
    OK mais si tu pars du principe que le boulet part a 100km heure, es calculs que tu as montre qu'il part ensuite a 16000m/heure soit 5.10^8 metres/seconde, ca parait rapide.
    il faut diviser vitesse_horizontale_metre_heure par 3600, pas multiplier

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    ohhhh! Merci! Je test ça dans 20mins et je te reviens

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/09/2012, 11h52
  2. Réponses: 2
    Dernier message: 07/01/2007, 12h15
  3. trouvé l'erreur !
    Par kiss78 dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2006, 21h13
  4. [FTP] Warning avec ftp_get, mais pas de message d'erreur
    Par NomUtilisateurDejaPris dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2006, 18h12
  5. Clé etrangere erreur 150 mais je vois pas l'erreur
    Par HurtMarley dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 03/05/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo