Bonjour,
J'ai un problème concernant la portée des variables. Je ne comprends pas pourquoi, dans mon programme, je ne peux pas afficher les variables physiques (y,v,a) en dehors du IF.
À l'extérieur du IF, les variables prennent toutes des valeurs nulles sauf la variable n. Voici un exemple de lignes affichees.
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Exterieur : t[29]= 0.00000 delta t= 0.00000 y= 0.00000 v= 0.00000 a= 0.00000
Interieur : t[29]= 0.96012 delta t= 0.03510 y= 1.58867 v= 3.56652 a= 3.85883
Pourtant, les variables sont déclarées de façon globale au début.
Voici le code:
J'aimerais donc savoir, si possible, ce qui ne va pas dans ce programme.
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 #include <iomanip> #include <iostream> #include <math.h> #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/Graphics/RenderWindow.hpp> using namespace std; int main() { // Paramètres physiques. const int MF=3037000; // Masse totale de la fusée [kg]. const int DMAS=5200; // Débit massique [kg/s]. const int VEJECT=2250; // Vitesse d'éjection des gaz [m/s]. double MT; // Masse de la Terre [kg]. MT=5,98*pow(10,24); const long RT=6378000; // Rayon de la Terre [m]. double G; G=6,67*pow(10,-11); // Constante de gravitation universelle [m^3/s^2*kg]. // Compteurs. int i=0; // Compteur. int n; // Numéro de l'élément échantillonné. int N=10000; // Nombre d'éléments dans les tableaux. // Variables physiques. double temps; // Temps actuel [s]. double t[N]; // Tableau des temps [s]. double delta_t[N]; // Tableau des différences de temps [s]. double y[N]; // Altitude de la fusée [m]. double v[N]; // Vitesse de la fusée [m/s]. double a[N]; // Accélération de la fusée [m/s^2]. // Création de la fenêtre. sf::RenderWindow App(sf::VideoMode(800, 600), "Lancement d'une fusee"); sf::Font Arial; if (!Arial.LoadFromFile("arial.ttf")) return EXIT_FAILURE; // Initialisation des variables. sf::Clock Clock; t[0] = 0; delta_t[0] = 0; y[0] = 0; v[0] = 0; a[0] = (DMAS*VEJECT)/(MF-DMAS*t[0])-((G*MT)/pow((RT+y[0]),2)); n = 1; // Début de la simulation. while (App.IsOpened()) { sf::Event Event; while (App.GetEvent(Event)) { if (Event.Type == sf::Event::Closed) App.Close(); } App.Clear(); temps = Clock.GetElapsedTime(); // Mesure du temps. if (i==9) // Échantillonnage des données (1:10). { t[n] = temps; delta_t[n] = t[n] - t[n-1]; y[n] = v[n-1]*delta_t[n-1] + y[n-1]; v[n] = a[n-1]*delta_t[n-1] + v[n-1]; a[n] = (DMAS*VEJECT)/(MF-DMAS*t[n])-((G*MT)/pow((RT+y[n]),2)); cout << "Interieur : t["<< std::fixed << setprecision (5) << n<<"]= "<<t[n]<<" delta t= "<<delta_t[n]<< " y= " << y[n] <<" v= "<<v[n]<<" a= "<<a[n]<< endl<<endl; n++; i=0; } i=i++; // Test : Les valeurs affichées ici ne sont pas les mêmes que celles qui sont affichées dans le IF. cout << "Exterieur : t["<< std::fixed << setprecision (5) << n<<"]= "<<t[n]<<" delta t= "<<delta_t[n]<< " y= " << y[n] <<" v= "<<v[n]<<" a= "<<a[n]<< endl; // Réafficher la fenêtre entière. App.Display(); } return 0; }
Merci
Partager