#include #include "dislin.h" using namespace std; class Ressort { public: //constructeurs Ressort(); //constructeur par defaut Ressort(double, double, double, double); //constructeur avec parameters ~Ressort(); //destructeur //methodes void definition(); //saisie void deplacer(double, double); //mise a jour void periode(); //periode d'oscillation void save(); //memorise la position actuelle private: //donnees membres double young; double masse; double vitesse; double distance; double vitIni; double distIni; }; //constructeur par defaut Ressort::Ressort() { vitesse = 0.; distance = 0.; save(); cout << "Ressort construit sans initialization !" << endl; } //constructeur avec parametres Ressort::Ressort(double y, double m, double vit, double dist) : young(y), masse(m), vitesse(vit), distance(dist) { save(); cout << "Ressort construit ! Periode d'oscillation : " << young/masse << endl; } //constructeur avec parametres: ce-ci est equivalant au precedent /*Ressort::Ressort(double y, double m, double vit, double dist) { young = y; masse = m; vitesse = vit; distance = dist; save(); cout << "Ressort construit ! Periode d’oscillation: " << young/masse << endl; } */ //destructeur Ressort::~Ressort() { cout << "Le ressort a ete detruite !" << endl; } //memorise la position actuelle void Ressort::save() { vitIni = vitesse; distIni = distance; } void Ressort::definition() { cout << "Module de Young : "; cin >> young; cout << "Masse : "; cin >> masse; cout << "Position initiale: "; cin >> distance; cout << "Vitesse initiale : "; cin >> vitesse; } void Ressort::periode() { cout << "periode d’oscillation: " << young/masse << endl; } //integration de la trajectoire void Ressort::deplacer(double t, double dt) { save(); int steps = int(t/dt); //allocation dynamique des vecteurs iX, iV, iT pour fonctions dislin double *iX = new double[steps]; double *iV = new double[steps]; double *iT = new double[steps]; iV[0] = vitIni; iX[0] = distIni; iT[0] = 0.; //methode de Runge pour le calcule de la trajectoire iV[0] = iV[0] + young/masse*iX[0]*dt/2.; for (int i=1; i