Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.02.2012, 16:51

Problem:error C2062: 'int'-Typ unerwartet

Hallo,

wie die Überschrift schon sagt, habe ich ein Problem beim erstellen eines kleinen, ich sage mal Übungsprogrammes.

Es soll mir nur dazu dienen, den Umgang mit C++ näher zu bringen.

Erstmal Quelltext und die Fehleranzeige

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
#include<iostream>
#include<windows.h>
usingnamespace std;

//Funktionsprototypen
//
int Rechnen (int Level);
int TesteHighscore (int Punkte, int Highscore);
int WaehleLevel (int Level);
//Hauptprogramm
//
int main ()
{
//Variablen
int Highscore = 1;
int Level = 5;
char Auswahl;
//Zufallszahl generieren
//
srand (timeGetTime ());
//Verarbeiten des Mens
//
do
{
//Men ausgeben
//
cout << "___________________________" << endl;
cout << "|Rechen Test (1, addition)|" << endl;
cout << "|-------------------------|" << endl;
cout << "|(N)eues Spiel starten !|" << endl;
cout << "|(L)evel auswhlen !|" << endl;
cout << "|(H)ighscore anzeigen !|" << endl;
cout << "|(B)eenden !|" << endl;
cout << "---------------------------" << endl;
cout << "\n\n\n\n" << endl;
//Eingabe abfragen
//
cout << "Auswahl: " << endl;
cin >> Auswahl;
//Je nach Eingabe verzweigen
//
switch (Auswahl)
{
//Neues Spiel starten?
case ('n'):
case ('N'):
{
//Spiele
int Punkte;
Punkte = Rechnen (Level);
Highscore = TesteHighscore (Punkte, Highscore);
} break;

//Level whlen?
case ('l'):
case ('L'):
{
Level = WaehleLevel (Level);
} break;
//Highscore anzeigen?
case ('h'):
case ('H'):
{
cout << "Der Aktuelle Highscore Betrgt: ";
cout << Highscore << " Punkten!\n\n";
} break;
//Beenden?
case ('b'):
case ('B'):
{
cout << "Spiel Beenden" << endl;
} break;
//Falsche Eingabe
default:
{
cout << "Falsche Eingabe!\n\n";
}
} while (Auswahl != 'b' && Auswahl != 'B'); //Spiel beenden
cout << "Bis zum nchsten mal!" << endl;
return 0;
}//main
//Whle Level
//
//Aufgabe: Ein neues Level whlen
//
int WaehleLevel (int Level);
{
int NeuerLevel;

do
{
//Neues Level whlen
cout << "Aktueller Level: " << Level << endl;
cout << "Neuer Level (1-5): ";
cin >> NeuerLevel;
//Ungltiges Level gewhlt?
if (NeuerLevel < 1 || NeuerLevel > 5)
{
//Fehlermeldung ausgeben
cout << "Ungltiger Level!" << endl;
}
} while (NeuerLevel < 1 || NeuerLevel > 5);

//Gewhlten Level zurckgeben
return NeuerLevel;
}//Waehle Level
//Spielen
//
//Aufgabe: Spiel Spielen
//
int Rechnen (int Level);
{
int Zufallszahl;
int Faktor;
int Bereich1 = Level*20;
int Punkte1 = 0;
int Punkte2 = 0;
int Punkte3 = 0;
int EigenesErgebnis = 0;
int Punkte;
int Versuche = 0;
int Ergebnis;
int Bereich;
{
//Zufallszahl ermittesln
Zufallszahl = (rand())+1;
//Faktor ermitteln
Faktor = (rand())+1;

//Ergebniss ausrechnen
EigenesErgebnis = Zufallszahl + Faktor;

//So lange bis richtig
while (EigenesErgebnis != EigenesErgebnis)
{
cout << "Dein Ergebnis: ";
cin >> EigenesErgebnis;
Versuche++;
//Zahl hat nicht gestimmt 
if (EigenesErgebnis < Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;
if (EigenesErgebnis > Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;
}
//Die Zahl wurde Erraten
cout << "\nErste Aufgabe gelsst!" << endl;
//Punkte fr erste Aufgabe berechnen
Punkte1 = Bereich - Versuche + 1;
Punkte1 *= Level;
}



//2. Aufgabe
{
{
//Zufallszahl ermittesln
Zufallszahl = (rand())+1;
//Faktor ermitteln
Faktor = (rand())+1;
}
//Ergebniss ausrechnen
EigenesErgebnis = Zufallszahl + Faktor;
//So lange bis richtig
while (EigenesErgebnis != EigenesErgebnis)
{
cout << "Dein Ergebnis: ";
cin >> EigenesErgebnis;
Versuche++;
//Zahl hat nicht gestimmt 
if (EigenesErgebnis < Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;
if (EigenesErgebnis > Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;
}
//Die Zahl wurde Erraten
cout << "\nZweite Aufgabe gelsst!" << endl;
//Punkte fr erste Aufgabe berechnen
Punkte2 = Bereich - Versuche + 1;
Punkte2 *= Level;
}


//3. Aufgabe
{
//Zufallszahl ermittesln
Zufallszahl = (rand())+1;
//Faktor ermitteln
Faktor = (rand()*8)+1;
//Ergebniss ausrechnen
Ergebnis = Zufallszahl + Faktor;
//So lange bis richtig
while (EigenesErgebnis != EigenesErgebnis)
{
cout << "Dein Ergebnis: ";
cin >> EigenesErgebnis;
Versuche++;
//Zahl hat nicht gestimmt 
if (EigenesErgebnis < Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;
if (EigenesErgebnis > Ergebnis)
cout << "Falsches Ergebnis, nochmal!" << endl;

//Die Zahl wurde Erraten
cout << "\nZweite Aufgabe gelsst!" << endl;
}
//Punkte fr erste Aufgabe berechnen
Punkte3 = Bereich - Versuche + 1;
Punkte3 *= Level;
}

Punkte = Punkte1 + Punkte2 + Punkte3;

//Punkte zurckgeben
return Punkte;
}
}//Spielen

//Teste Highscore
//
//Prfen ob neuer Highscore Erreicht wurde 
//


int TesteHighscore (int Punkte, int Highscore)
{
//Prfen ob geknackt
if (Punkte > Highscore)
{
cout << "Glueckwunsch! Neuer Highscore!\n\n";
Highscore = Punkte;
}
else
{
cout << "Kein neuer Highscore, sorry Mann!\n\n";
}
//Highscore zurckgeben
return Highscore;
}

Und die Fehlermeldung:

.cpp(107) : error C2062: 'int'-Typ unerwartet



Ich habe schon einiges versucht, um diesen Fehler loszuwerden, jedoch keine Lösung gefunden.

Ich hoffe das ganze ist nicht zu sehr mit Fehlern zugebaut, aber ich befürchte es.



Ich hoffe mir kann jemand helfen und bedanke mich dafür schonmal dafür.





NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

04.02.2012, 16:54

Willkommen im Forum. Das nächste mal bitte den Quellcodetab beim Posten benutzen.

bei einer Funktionsdefinition gehört hinter den Parametern kein Semikolon:

C-/C++-Quelltext

1
int WaehleLevel (int Level)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

04.02.2012, 17:17

Danke schonmal für die schnelle Antwort!

Ich hatte das ganze zu Anfang auch ohne das Semikolon gemacht.
Dann sagt er mir aber immer das das Semikolon fehlt.

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

4

04.02.2012, 18:06

Ich hab mir den Code mal in mein VS kopiert!
Also erstmal solltest du alle geschweiften Klammern entfernen, die nicht nach einem if, else, do, while, etc. kommen (hinter ein case gehören auch keine Klammern)! Das hat nur zu nem Haufen von Fehlern geführt...
Dann natürlich wie NachoMan schon sagte das Semikolon hinter den Funktionen!

Außerdem heißt es nicht:

C-/C++-Quelltext

1
usingnamespace std;
sondern

C-/C++-Quelltext

1
using namespace std;

Danach hatte mein Compiler ein Problem mit

C-/C++-Quelltext

1
timeGetTime ()

Da konnte ich aber nicht herausfinden, woran das liegt! Also habe ich sie weggelassen und durch ne feste Zahl ersetzt! Der Fehler sah so aus:

Quellcode

1
2
1>Test.obj : error LNK2028: unresolved token (0A00035D) "extern "C" unsigned long __stdcall timeGetTime(void)" (?timeGetTime@@$$J10YGKXZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>Test.obj : error LNK2019: unresolved external symbol "extern "C" unsigned long __stdcall timeGetTime(void)" (?timeGetTime@@$$J10YGKXZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)

Die beiden Variablen Ergebnis und Bereich aus der Rechnen-Funktion werden übrigens von dem ersten Gebrauch nicht initalisiert! Ist zwar kein Fehler, kann aber bei laufendem Programm zu Problemen führen... ;)

C-/C++-Quelltext

1
2
3
//So lange bis richtig
while (EigenesErgebnis != EigenesErgebnis)
{
EigenesErgebnis ist nie != EigenesErgebnis! ;)
Daraus folgte bei mir:
Alle Aufgaben waren richtig gelöst, ohne dass ich was tun musste! ^^

Ich hoffe ich hab jetzt nichts vergessen...

Mfg Harry222

5

04.02.2012, 18:16

Danke erstmal für die ganzen Tipps und natürlich auch für die Zeit die dareininvestiert wurde ! :)

Ich werde das alles mal ausprobieren und schauen ob ich auch alles so richtig verstanden habe
und auch ins richtige umwandeln kann!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

04.02.2012, 18:24

Ich hab mir den Code mal in mein VS kopiert!
Also erstmal solltest du alle geschweiften Klammern entfernen, die nicht nach einem if, else, do, while, etc. kommen (hinter ein case gehören auch keine Klammern)!

Man darf Blöcke aufmachen wo immer man will, man sollte sie aber auch wieder schließen. Keine Blöcke hinter einem case? Wieso nicht? Darf man und macht in manchen Situationen sogar durchaus Sinn.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

7

04.02.2012, 18:30

An mehereren Stellen hat das aber zu Fehlern geführt! ;)
Man KANN es natürlich machen.

Mit dem case hast du auch recht! Mein Fehler...

Edit:
Daran, dass da aber an vielen Stellen aber auch Klammer fehlen, kann man sehen, dass man es nicht übertreiben sollte! Deswegen hatte ich ihm gesagt, dass er alle "unnötogen" Klammern entfernen soll!
Hätte ich vllt. gleich dazu schreiben sollen... ^^

Mfg Harry222

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Harry222« (04.02.2012, 18:36)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

04.02.2012, 18:34

Klar, falsche Blöcke führen zu Fehlern. :D
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige