Array zurückgeben (Funktion)


Danielku15

Erfahrenes Mitglied
Hi Leute.

Ich bin relativ neu in dem Gebiet C++. Mein Problem liegt darin dass ich eine Funktion (double dblZahleneingabe() ) habe. In dieser Funktion werden 2 Zahlen eingegeben die nachher zurückgegeben werden sollen. Nur irgendwie bekomm ich bei dem Wert immer nur 0 als Ergebnis. Was mach ich falsch?

Code:
 /*
 * Taschenrechner 
 */
 
 // Einbinden der Header-Dateien //
 	#include <iostream>
 
 // Namespace Standart auswählen //
 	using namespace std;
 
 // Deklarieren der Variablen //
 	double dblErgebnis,
 		   dblArrZahlen[2];
 
 // Deklarieren der Funktionen //
 	double dblZahleneingabe(),
 		   dblAddition(double dblZahl1, double dblZahl2);
 
 // Hauptfunktion //
 int main()
 {
 	// Begrüßung
 		cout << "Willkommen beim Taschenrechner\n " << endl;
 		cout << "Dieser Taschenrechner beherrscht die 4 Grundrechenarten \n " << endl;
 
 	// Addition aufrufen
 			dblArrZahlen[2] = dblZahleneingabe();
 			dblErgebnis = dblAddition(dblArrZahlen[0], dblArrZahlen[1]); 
 				
 	//Ergebnis ausgeben
 			cout << "Das Ergebnis lautet: " << dblErgebnis;
 	
 	return 0;
 }
 
 
 
 // Addition //
 double dblAddition(double dblZahl1, double dblZahl2)
 {
 	// Variablen deklarieren
 	double dblErgebnis;
 
 	//Ergebnis berechnen
 	dblErgebnis = dblZahl1 + dblZahl2;
 	
 	//Ergebnis rückgeben
 	return dblErgebnis;
 }
 
 // Eingabe der Zahlen //
 double dblZahleneingabe()
 {
 	// Array deklarieren
 	double dblArrZahlen[2];
 
 	// Zahlen Anfordern
 		cout << "Bitte geben Sie den 1. Summand ein: "; //Zahl1 
 		cin >> dblArrZahlen[0];
 
 		cout << endl;
 
 		cout << "Bitte geben Sie den 2. Summand ein: "; //Zahl2
 		cin >> dblArrZahlen[1];
 
 	return dblArrZahlen[2];
 }
 

andreas_gierisch

Erfahrenes Mitglied
Hallo,
so wie du das jetz dort stehn hast, wird bei der Eingabefunktion nur der Wert der Arraystelle mit dem Index 2 zurückgegeben. du müsstest allerdings das komplette Array mithilfe seiner Adresse übergeben. (probier mal "return dblArrZahlen;", ohne einem Index)
 

RedWing

Erfahrenes Mitglied
andreas_gierisch hat gesagt.:
Hallo,
so wie du das jetz dort stehn hast, wird bei der Eingabefunktion nur der Wert der Arraystelle mit dem Index 2 zurückgegeben. du müsstest allerdings das komplette Array mithilfe seiner Adresse übergeben. (probier mal "return dblArrZahlen;", ohne einem Index)
Das geht garantiert schief, wenn er die Adresse auf ein Array zurückgibt
was lokal auf dem Stack liegt wird er nicht weit kommen, wenn das nicht
schon der Compiler verbietet...

Besser ist du löst das per Call By Reference:

Code:
void dblZahleneingabe(double* input, int length){
        for(int i = 0; i < length; i++){
                //lese in input[i] von stdin ein
        }
}

int main(){
        const int length = 2;
        double array[length];
        dblZahleneingabe(array, length);
}

Gruß

RedWing
 

Forum-Statistiken

Themen
272.354
Beiträge
1.558.605
Mitglieder
187.826
Neuestes Mitglied
drmidu