Frage von Kravag, 40

Hallo zusammen, ich hätte mal eine Frage zu diesem Code(siehe unten) Es werden verschiedene Fehlermeldungen angezeigtund ich weis nicht warum?

#include <iostream>
#include <windows.h>

using namespace std;


void Test1()
{
static int Zahl1
Zahl1 = ++;
cout << "Erste Zahl\n" << Zahl1;
main();
}

void Test2()
{
static int Zahl2
Zahl2 = ++;
cout << "Zweite Zahl:\n" << Zahl2;
main();
}

void Test3()
{
static int Zahl3
Zahl3 = ++;
cout << "Dritte Zahl:\n" << Zahl3;
main();
}



int main()
{
if(Zahl1 == 1)
{
    Zahl1 = 1;
    cout << "---------------------------------------------\n";
    cout << "Die erste Ziffer lautet:\n" << Zahl1;
}
else
{
    Test1();
}

if(Zahl2 == 2)
{
    Zahl2 = 2;
    cout << "Die zweite Ziffer lautet:\n" << Zahl2;
}
else
{
    Test2();
}
    
if(Zahl3 == 7)
{
    Zahl3 = 7;
    cout << "Die Dritte Ziffer lautet:\n" << Zahl3;
    cout << "---------------------------------------------\n";
}
else
{
    Test3();
}




cin.sync();
return 0;
}
Antwort
von AnonYmus19941, 29

Und welche Fehlermeldungen werden angezeigt?

Es ist ja schön, dass du im Gegensatz zu vielen anderen die "Code"-Funktion gefunden hast, aber ohne die Fehlermeldungen wird es deutlich schwerer ...

Kommentar von Kravag ,

Hier die Fehlermeldungen:

D:\C++\ZahlenSuche.cppIn function 'void Test1()':

102D:\C++\ZahlenSuche.cpp[Error] expected initializer before 'Zahl1'
1128D:\C++\ZahlenSuche.cpp[Error] 'Zahl1' was not declared in this scope
127D:\C++\ZahlenSuche.cpp[Error] 'main' was not declared in this scope
D:\C++\ZahlenSuche.cppIn function 'void Test2()':
182D:\C++\ZahlenSuche.cpp[Error] expected initializer before 'Zahl2'
1930D:\C++\ZahlenSuche.cpp[Error] 'Zahl2' was not declared in this scope
207D:\C++\ZahlenSuche.cpp[Error] 'main' was not declared in this scope
D:\C++\ZahlenSuche.cppIn function 'void Test3()':
262D:\C++\ZahlenSuche.cpp[Error] expected initializer before 'Zahl3'
2730D:\C++\ZahlenSuche.cpp[Error] 'Zahl3' was not declared in this scope
287D:\C++\ZahlenSuche.cpp[Error] 'main' was not declared in this scope
D:\C++\ZahlenSuche.cppIn function 'int main()':
355D:\C++\ZahlenSuche.cpp[Error] 'Zahl1' was not declared in this scope
465D:\C++\ZahlenSuche.cpp[Error] 'Zahl2' was not declared in this scope
565D:\C++\ZahlenSuche.cpp[Error] 'Zahl3' was not declared in this scope
Kommentar von AnonYmus19941 ,

Danke. Also gut, ich probiere es mal, allerdings kann ich kein C++, daher kann ich nur das schreiben, was ich von anderen Programmiersprachen kenne und mich hier wundert - korrigiere mich, wenn das eine Eigenheit von C++ ist.

1. Du rufst am Ende von aller TestX()-Funktionen immer die main()-Funktion auf. Das wird nach Beendigung der Funktion allerdings automatisch geregelt (es wird in die Über-Funktion zurückgekehrt), d. h. deine Konstruktion würde folgendermaßen ablaufen:
main()
  Test1()
    main()
      Test1()
        main()
          Test1() usw.
=> jede Endlosschleife

2. Du hast die Zahlen nirgendswo initialisiert oder auch definiert. Die main()-Funktion probiert also, eine nicht vorhandene Variable mit einer Zahl zu vergleichen. Das funktioniert i. d. R. nicht.

3. In den TestX()-Funkionen erzeugst du jeweils eine neue Zahl und benutzt nicht die gleiche Zahl wie die Hauptfunktion. Um das zu vermeiden, musst du die Zahlen vorher deklarieren evtl. ein Schlüsselwort wie "global" (Python) verwenden.
(s. https://de.wikipedia.org/wiki/Namensraum)

4. Anstatt "ZahlX = ++;" verwendet man in anderen Programmiersprachen "ZahlX++;" oder "ZahlX += 1;", allerdings könnte das in C++ anders sein.
(s. https://de.wikipedia.org/wiki/Inkrement_und_Dekrement#Informatik)

Kommentar von Kravag ,

Danke :)

Habe dies soweit verbessert,

hier der Code:

using namespace std;


void Test1();
void Test2();
void Test3();

void Test1()
{
static int Zahl1;
Zahl1 = + 1;
cout << "Erste Zahl\n" << Zahl1;
}

void Test2()
{
static int Zahl2;
Zahl2 = + 1;
cout << "Zweite Zahl:\n" << Zahl2;
}

void Test3()
{
static int Zahl3;
Zahl3 = + 1;
cout << "Dritte Zahl:\n" << Zahl3;
}

int main()
{
if(Zahl1 == 1)
{
Zahl1 = 1;
cout << "---------------------------------------------\n";
cout << "Die erste Ziffer lautet:\n" << Zahl1;
}
else
{
Test1();
}

if(Zahl2 == 2)
{
Zahl2 = 2;
cout << "Die zweite Ziffer lautet:\n" << Zahl2;
}
else
{
Test2();
}

if(Zahl3 == 7)
{
Zahl3 = 7;
cout << "Die Dritte Ziffer lautet:\n" << Zahl3;
cout << "---------------------------------------------\n";
}
else
{
Test3();
}

Bekomme aber denoch diese Fehlermeldungen:

D:\C++\ZahlenSuche.cppIn function 'int main()':

355D:\C++\ZahlenSuche.cpp[Error] 'Zahl1' was not declared in this scope
465D:\C++\ZahlenSuche.cpp[Error] 'Zahl2' was not declared in this scope
565D:\C++\ZahlenSuche.cpp[Error] 'Zahl3' was not declared in this scope
Kommentar von ymicky ,

Versuch deine Test Methoden in eine Klasse zu packen und dann in der Mainmethode so darauf zuzugreifen: Klassenname::Test();

Kommentar von AnonYmus19941 ,

Du hast mich offenbar falsch verstanden ...

Du musst die Variablen, die du in allen Methoden verwenden willst, vorher deklarieren. Die Methoden hingegen sind so ok. Der Quellcode wäre dann also:

using namespace std;

void Zahl1; // oder "void Zahl1 = 0;"
void Zahl2;
void Zahl3;

void Test1()
{
static int Zahl1;
Zahl1 = + 1;
cout << "Erste Zahl\n" << Zahl1;
}

void Test2()
{
static int Zahl2;
Zahl2 = + 1;
cout << "Zweite Zahl:\n" << Zahl2;
}

void Test3()
{
static int Zahl3;
Zahl3 = + 1;
cout << "Dritte Zahl:\n" << Zahl3;
}

int main()
{
if(Zahl1 == 1)
{
Zahl1 = 1;
cout << "---------------------------------------------\n";
cout << "Die erste Ziffer lautet:\n" << Zahl1;
}
else
{
Test1();
}

if(Zahl2 == 2)
{
Zahl2 = 2;
cout << "Die zweite Ziffer lautet:\n" << Zahl2;
}
else
{
Test2();
}

if(Zahl3 == 7)
{
Zahl3 = 7;
cout << "Die Dritte Ziffer lautet:\n" << Zahl3;
cout << "---------------------------------------------\n";
}
else
{
Test3();
}
}

s. auch http://www.tutorials.at/c/02-variablen-konstanten-zuweisung.html#G%C3%BCltigkeit... (C-Tutorial)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten