Wie kann ich eine Funktion verknüpfen?



  • Guten Tag zusammen,
    Dies ist mein fünfter Tag der Einführung in die C++ Programmierung und ich habe auch direkt eine Frage (Programm ist noch nicht fertig):

    Ich möchte in diesem Beispiel, dass im Fall der Switch-Funktion bei case 1 die Funktion sumSequence angewandt wird. Dort sollen solange Zahlen eingeben und anschließend addiert werden, bis der Benutzer eine negative Zahl eingibt. Dannach soll die Summe aller addierten Zahlen ausgegeben werden.

    Nun zeigt mir Dev-C++ beim kompilieren folgenden Fehler an:

    In function 'int main(int, char**)':
    in line 31 [Error] 'sumSequence' was not declared in this scope
    [Error] [main.o] Error 1

    Kann mir vielleicht jemand erklären wo hier mein Denkfehler liegt und was ich tun muss um den case 1 Befehl mit der int sumSequence-Funktion zu verknüpfen?

    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    
    using namespace std;
    
    int main (int nNumberofArgs, char* pszArgs[])
    {
    
    cout << "Bitte waehlen sie eine Option aus " << endl;
    cout << "" << endl;
    
    cout << "(1).) Addition" << endl;
    cout << "(2).) Subtraktion" << endl;
    cout << "(3).) Multiplikation" << endl;
    cout << "(4).) Division" << endl;
    cout << "(5).) Beenden" << endl;
    
    int Auswahl;
    
    cin >> Auswahl;
    
    switch (Auswahl) {
    
    	case (1):
    	cout << " Sie haben sich fuer die Addition entschieden. " << endl;
    	int accumulatedValue;
    	for (; ;) {
    		cout << "" << endl;
    		cout << " Geben sie die naechste Zahl ein:" << endl;
    		int accumulatedValue = sumSequence();
    		if (accumulatedValue == 0)
    		{
    			break;
    		}
    		cout << " Die Summe ist " << accumulatedValue << endl;
    	}
    	break;
    
    	case (2):		
    	cout << " Sie haben sich fuer die Substraktion entschieden. " << endl;
    	break;
    
    	case (3):
    	cout << " Sie haben sich fuer die Multiplikation entschieden. " << endl;
    	break;
    
    	case (4):
    	cout << " Sie haben sich fuer die Division entschieden. " << endl;
    	break;
    
    	case (5):
    	cout << " Das Programm wird jetzt beendet. " << endl;
    	system("PAUSE");
    	return 0;
    	break;
    
    	default:
    	cout << " Ungueltige Eingabe. " << endl;
    	break;
    }
    
    system("PAUSE");
    return 0;
    }
    
    int sumSequence(void)
    {
    	cout << " Zum Abbrechen geben sie eine negative Zahl ein. " << endl;
    
    	int Addition=0;
    
    		for( ; ;) {
    
    			int aValue = 0;
    			cout << " Geben sie die naechste Zahl ein. " << endl;			
    			cin >> aValue;
    
    			if (aValue < 0) {
    				break;
    			}			
    
    			Addition += aValue;
    
    		}
    
    		return Addition;
    }
    


  • Beim Aufruf in Zeile 31 kennt der Compiler die Funktion noch nicht, du musst sie vorher deklarieren.
    Und wo auch immer du das

    int main (int nNumberofArgs, char* pszArgs[])
    

    her hast, such dir eine andere Quelle.
    Ungarische Notation und die Tatsache, dass du nicht ganz verstanden hast, dass das optional ist heißt nichts gutes...



  • Ich lerne mit dem Buch C++ für Dummies von Stephen Randy Davis. Dies wurde mir empohlen, da es sich für Anfänger und als Nachschlagewerk für erfahrene Programmierer eignen soll.

    Ungarische Notation und die Tatsache, dass du nicht ganz verstanden hast, dass das optional ist heißt nichts gutes...

    Ich hatte es so verstanden, dass int main(int argc, char *argv[]) eingesetzt wird, wenn eine Funktion auf andere Funktionen zugreifen soll.
    Wie gesagt ist das mein Fünfter Tag wo ich mich jetzt intensiv mit der Programmierung in C++ beschäftige. Ich hoffe es sei mir Verziehen, dass ich noch nicht alles weiß...

    Edit:
    Danke für deine Hilfe. Ich habe die sumSequence-Funktion jetzt an den Anfang kopiert und nun kann der Compiler etwas damit anfangen. 🙂


Log in to reply