Das folgende C++ Programm berechnet die Massenträgheitsmomente eines dünnen Stabs und einer dünnen Rechteckplatte. Das Massenträgheitsmoment J wird um eine Z-Achse bestimmt, die parallel durch den Schwerpunkt des Körpers gelegt wird.
Der Mittelpunkt des Stabs entspricht dem Schwerpunkt des Stabs. Das zugehörige Massenträgheitsmoment eines dünnen geraden Stabs beträgt:
m ist die Masse des Stabs, und l ist seine Länge.
Siehe mehr dazu unter: https://www.vadimanhenko.com/search/label/Massentraegheitsmoment%20eines%20Drahtes
Der Schwerpunkt einer dünnen Rechteckplatte liegt in der Mitte ihrer Diagonale d. Das zugehörige Massenträgheitsmoment einer dünnen Rechteckplatte beträgt:
m ist die Masse der Rechteckplatte.
Seien a die Länge und b die Breite der Rechteckplatte, dann gilt:
Vergleicht man die Formeln für die Massenträgheitsmomente des Stabs und der Rechteckplatte, so erkennt man, dass der einzige Unterschied in der Anzahl der Variablen liegt. Das C++ Programm erhält eine Funktion namens mtmoment(), die 2 oder 3 Argumente besitzt. Je nach Anzahl der übergebenen Argumente berechnet das Programm das entsprechende Massenträgheitsmoment:
1) Wenn es 2 Argumente der Funktion gibt, dann wird das Massenträgheitsmoment des Stabs berechnet.
2) Wenn es 3 Argumente der Funktion gibt, dann wird das Massenträgheitsmoment der Rechteckplatte berechnet.
Dieses Prinzip nennt man die Funktionsüberladung. Der Compiler weiß immer, welche Funktion verwendet werden muss, obwohl die Funktionen denselben Namen haben.
#include <iostream>
#include <cmath>
using namespace std;
// Funktionsprototypen
double mtmoment(double, double);
double mtmoment(double, double, double);
int main()
{
cout << "Das Programm berechnet das Massentraegheitsmoment eines Stabes oder einer Recheckplatte um Z-Achse durch den Schwerpunkt." << endl;
cout << "Waehlen Sie bitte aus, um welchen Koerper handelt es sich:" << endl;
cout << "1: Stab;" << endl;
cout << "2: Rechteckplatte." << endl;
cout << "0: Programm wird beendet." << endl;
int Wahl;
do {
cout << "Waehlen Sie bitte eine Option aus:" << endl;
cin >> Wahl;
cout << "Sie haben Option " << Wahl << " ausgewaehlt." << endl;
if (Wahl == 1 || Wahl == 2)
{
if (Wahl == 1)
{
cout << "Geben Sie bitte die Masse in kg ein:" << endl;
double mstab;
cin >> mstab;
cout << "Geben Sie bitte die Laenge des Stabes in m ein:" << endl;
double l;
cin >> l;
double Jstab = mtmoment(mstab, l);
cout << "Das Massentraegheitsmoment ist gleich " << Jstab << " kg*m2" << endl;
}
else
{
cout << "Geben Sie bitte die Masse in kg ein:" << endl;
double mplatte;
cin >> mplatte;
cout << "Geben Sie bitte die Laenge der Recheckplatte in m ein:" << endl;
double a;
cin >> a;
cout << "Geben Sie bitte die Breite der Recheckplatte in m ein:" << endl;
double b;
cin >> b;
double Jplatte = mtmoment(mplatte, a, b);
cout << "Das Massentraegheitsmoment ist gleich " << Jplatte << " kg*m2" << endl;
}
}
else
cout << "Sie haben keine richtige Option fuer die Berechnung angegeben!" << endl;
} while (Wahl != 0);
}
// Funktion für den Stab
double mtmoment(double m, double length)
{
double J = m * pow(length, 2) / 12;
return J;
}
// Funktion für die Rechteckplatte
double mtmoment(double mpl, double apl, double bpl)
{
double diag = pow(apl, 2) + pow(bpl, 2);
double J = mpl * diag / 12;
return J;
}
Keine Kommentare:
Kommentar veröffentlichen