Hallo,
entschuldigt, dass ich hier jetzt einfach so reinplatze, aber ich habe ein ähnliches Problem. Ich komme bei einer relativ einfachen Berechnung einfach nicht auf das richtige Ergebnis im Programm. Ich habe mich durchgeackert durch viele Beiträge und unzählige für mich vorstellbare Feherquellen und habe meiner Meinung nach alle notwendigen Deklarationen und Besonderheiten beim Arbeiten mit "double" variablen durchgeführt und beachtet. Es geht um folgendes Problem. Ich möchte das Takeoffweight eines Flugzeuges berechnen lassen, bestehend aus dem vordefinierten Leergewicht, dem Gewicht aller Passagiere (Anzahl der Passagiere wird durch cin definiert) inkl. Gepäck (= toweightbasic) sowie dem zuvor auf ähnliche Weise erfolgreich berechneten Treibstoff in Pfund. Ich hatte einige Zeilen zuvor ein ähnliches Problem beim Ermitteln der empfohlenen Sinkrate, da ließ es sich aber durch das richtige Definieren mit xx.00 beispielsweise und das Rechnen ohne Zahlenwerte, also nur mit Variablen, lösen. Nur hier geht es einfach nicht. Ich habe meinen Taschenrechner gezückt und genauso wies im Quellcode steht 1:1 eingegeben und komme auf 146500 lbs während das Programm ausgibt: 1.03069e+265 bzw. bei einem anderen Testlauf weniger als das, was vorher für das Treibstoffgewicht rauskommt. Treibstoffgewicht bei jedem Durchlauf: 44630.6. Für toweightbasic = passengers*pasandluggageStdWeight kommt der korrekte Wert, nämlich 22880 lbs raus bei 104 Passagieren und 220 lbs als Standardgewicht pro Passagier (inkl. Gepäck). Anbei ein kompilierbarer Teil meines Codes, wäre für baldige Hilfe sehr dankbar. Ich übersehe ganz sicher was.
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
// Definition of aircraft to use:
string aircraft;
cout << "Please tell me which aircraft you wanna use (ICAO): "; getline(cin, aircraft);
// Aircraft ICAO Codes für eure Tests: Boeing 737 = B738; Boeing 747 = B744, Learjet 45 = LJ45;
// TOW and TOS Variables
double pasandluggageStdWeight = 220.0; // lbs
cout << pasandluggageStdWeight; // Testausgabe
double passengers; // user input
double emptyweightb738 = 90170.0; // lbs
cout << emptyweightb738; // Testausgabe
double emptyweightb744 = 404845.0; // lbs
cout << emptyweightb744; // Testausgabe
double emptyweightlj45 = 13550.0; // lbs
cout << emptyweightlj45; // Testausgabe
double reftakeoffweightb738 = 140507.0; // lbs
double reftakeoffspeedb738 = 163.0; // knots
double reftakeoffweightb744 = 846365.0; // lbs
double reftakeoffspeedb744 = 205.0; // knots
double reftakeoffweightlj45 = 20500.0; // lbs
double reftakeoffspeedlj45 = 175.0; // knots
double maxtakeoffweightb738 = 172500.0; // lbs
double maxtakeoffweightb744 = 910000.0; // lbs
double maxtakeoffweightlj45 = 20500.0; // lbs
double takeoffweight;
double takeoffspeed;
// TOW and TOS Calculation
cout << "Please enter the no. of passengers for this trip (no+.0): "; cin >> passengers;
cout << passengers; // Testausgabe
double toweightbasic = passengers*pasandluggageStdWeight; cout << toweightbasic;
cout << "Calculating take off weight and speed";
for(int i=1; i<=5;++i)
{
cout << "."; Sleep(1000);
}
cout << ".\n\n";
if(aircraft == "B738")
{
takeoffweight = emptyweightb738+toweightbasic+cruisefuelgtog;
takeoffspeed = (takeoffweight/reftakeoffweightb738)*reftakeoffspeedb738;
}
if(aircraft == "B744")
{
takeoffweight = emptyweightb744+toweightbasic+cruisefuelgtog;
takeoffspeed = (takeoffweight/reftakeoffweightb744)*reftakeoffspeedb744;
}
if(aircraft == "LJ45")
{
takeoffweight = emptyweightlj45+toweightbasic+cruisefuelgtog;
takeoffspeed = (takeoffweight/reftakeoffweightlj45)*reftakeoffweightlj45;
}
cout << "Takeoff weight: " << takeoffweight << " lbs\n" << "Takeoff speed: " << takeoffspeed << " knots. Press 'Enter'!"; cin.get();
if(aircraft == "B738")
{
cout << "Maximum Takeoff Weight: " << maxtakeoffweightb738 << endl; Sleep(1000);
}
if(aircraft == "B744")
{
cout << "Maximum Takeoff Weight: " << maxtakeoffweightb744 << endl; Sleep(1000);
}
if(aircraft == "LJ45")
{
cout << "Maximum Takeoff Weight: " << maxtakeoffweightlj45 << endl; Sleep(1000);
}
return 0;
}
Liebe Grüße,
Martin