Tim Krämer
Grünschnabel
Ich füg einfach mal den Quellcode ein, denn er is relativ verständlich Kommentiert...
// Beschreibung: Ausgabe der Summe, des arithmetischen-, des geometrischen und des harmonischen Mittels, des Minimums und des
// Maximums dreier Variablen
// Aufruf: a12
// Eingabe: Variablen (a1,a2,a3, min, max)
// Ausgabe: Summe (s); arithmetisches Mittel (m); geometrisches Mittel (g)
// harmonisches Mittel (h); Minimum (min); Maximum (max)
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
using namespace std;
int main()
{
// Variablen a1, a2, a3, Summe, aMittel, gMittel, hMittel, min und max anlegen
float a1, a2, a3, Summe, aMittel, gMittel, hMittel, min, max;
//Variablen indat und datei anlegen
string datei1;
string datei2;
// Datei suchen, aus der a1, a2 und a3 gelesen werden sollen
cout << "Aus welcher Datei sollen a1, a2 und a3 gelesen werden? ";
cin >> datei1;
ifstream indat("datei1.c_str");
//a1, a2 und a3 aus Datei einlesen
indat >> a1;
indat >> a2;
indat >> a3;
if(a1 > 0 && a2 > 0 && a3 > 0)
{
// Ergebnisse(s, m, g, h, min und max) berechnen
Summe = a1+a2+a3;
aMittel = (a1+a2+a3) /2;
gMittel = sqrt(a1+a2+a3);
hMittel = 1. / a1 + 1. / a2 + 1. / a3;
hMittel = 2. / hMittel;
min = 0;
max = 0;
//Frage nach Dateiname in die geschrieben werden soll
cout << "Wie soll die Datei heissen, in die die Ergebnisse geschrieben werden?";
cin >> datei2;
ofstream outdat("datei2.c_str");
//Text der in die Datei geschrieben wird
outdat << "Die Summe von " << a1 << ", " << a2 << " und " << a3 << " ist: " << Summe << endl;
outdat << "Das arithmetische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << aMittel << endl;
outdat << "Das geometrische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << gMittel << endl;
outdat << "Das harmonische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << hMittel << endl;
outdat << "Das Minimum der Zahlen " << a1 << ", " << a2 << " und " << a3 << " ist: " << min << endl;
outdat << "Das Maximum der Zahlen " << a1 << ", " << a2 << " und " << a3 << " ist: " << max << endl;
}
else
// Standardfehlerausgabe
cerr << "FEHLER! Bitte nur positive Zahlen verwenden!" << endl;
}
So... das 1. Problem das ich hab is, dass die Datei in die die Ergebnisse geschrieben werden immer datei2.c_str heisst
2. Wie kann ich min und max der Werte berechnen?
3. die Werte werden anscheinend nicht aus der angegebenen Datei gelesen, sondern irgendwo anders, weil die Ausgabewerte vollkommen falsch sind. Wenn ich nämlich eine schon vorhandene Datei beim ifstream angebe, stimmen die Werte
4. Ich glaube dass die Formeln für das arithmetische und das geometrische Mittel nicht ganz stimmen...
Ich würde mich freuen, wenn mir jemand dabei helfen könnte, denn ich sitze schon ewig an dem Prog und finde einfach keine Lösung für die Probleme
MfG Tim
// Beschreibung: Ausgabe der Summe, des arithmetischen-, des geometrischen und des harmonischen Mittels, des Minimums und des
// Maximums dreier Variablen
// Aufruf: a12
// Eingabe: Variablen (a1,a2,a3, min, max)
// Ausgabe: Summe (s); arithmetisches Mittel (m); geometrisches Mittel (g)
// harmonisches Mittel (h); Minimum (min); Maximum (max)
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
using namespace std;
int main()
{
// Variablen a1, a2, a3, Summe, aMittel, gMittel, hMittel, min und max anlegen
float a1, a2, a3, Summe, aMittel, gMittel, hMittel, min, max;
//Variablen indat und datei anlegen
string datei1;
string datei2;
// Datei suchen, aus der a1, a2 und a3 gelesen werden sollen
cout << "Aus welcher Datei sollen a1, a2 und a3 gelesen werden? ";
cin >> datei1;
ifstream indat("datei1.c_str");
//a1, a2 und a3 aus Datei einlesen
indat >> a1;
indat >> a2;
indat >> a3;
if(a1 > 0 && a2 > 0 && a3 > 0)
{
// Ergebnisse(s, m, g, h, min und max) berechnen
Summe = a1+a2+a3;
aMittel = (a1+a2+a3) /2;
gMittel = sqrt(a1+a2+a3);
hMittel = 1. / a1 + 1. / a2 + 1. / a3;
hMittel = 2. / hMittel;
min = 0;
max = 0;
//Frage nach Dateiname in die geschrieben werden soll
cout << "Wie soll die Datei heissen, in die die Ergebnisse geschrieben werden?";
cin >> datei2;
ofstream outdat("datei2.c_str");
//Text der in die Datei geschrieben wird
outdat << "Die Summe von " << a1 << ", " << a2 << " und " << a3 << " ist: " << Summe << endl;
outdat << "Das arithmetische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << aMittel << endl;
outdat << "Das geometrische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << gMittel << endl;
outdat << "Das harmonische Mittel von " << a1 << ", " << a2 << " und " << a3 << " ist: " << hMittel << endl;
outdat << "Das Minimum der Zahlen " << a1 << ", " << a2 << " und " << a3 << " ist: " << min << endl;
outdat << "Das Maximum der Zahlen " << a1 << ", " << a2 << " und " << a3 << " ist: " << max << endl;
}
else
// Standardfehlerausgabe
cerr << "FEHLER! Bitte nur positive Zahlen verwenden!" << endl;
}
So... das 1. Problem das ich hab is, dass die Datei in die die Ergebnisse geschrieben werden immer datei2.c_str heisst
2. Wie kann ich min und max der Werte berechnen?
3. die Werte werden anscheinend nicht aus der angegebenen Datei gelesen, sondern irgendwo anders, weil die Ausgabewerte vollkommen falsch sind. Wenn ich nämlich eine schon vorhandene Datei beim ifstream angebe, stimmen die Werte
4. Ich glaube dass die Formeln für das arithmetische und das geometrische Mittel nicht ganz stimmen...
Ich würde mich freuen, wenn mir jemand dabei helfen könnte, denn ich sitze schon ewig an dem Prog und finde einfach keine Lösung für die Probleme
MfG Tim