|
You last visited: Today at 14:55
Advertisement
Warum verlangt er ein ; ?
Discussion on Warum verlangt er ein ; ? within the C/C++ forum part of the Coders Den category.
04/18/2012, 23:22
|
#1
|
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
|
Warum verlangt er ein ; ?
Hi Leute, Ich lese grad ein Ebook von C++ und da ist dieser Code drin.
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b)
cout << "#";
cout << endl;
}
}
So aber C++ sagt da ist ein Fehler, er erwartet ein semikolon nach dem Parameter, aber wieso ? Es ist doch alles so richtig. Und wenn ich dort ein Semikolon hinsetzte, dann gelten die Variabeln nicht mehr, da sie ja lokal sind.
Was mach ich jetzt ?
Edit: Sry falscher Code
|
|
|
04/18/2012, 23:35
|
#2
|
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
|
Ich kann mir nicht vorstellen, dass der Code so in deinem Buch steht, da er absolut unleserlich ist! Und falls doch, besorg' dir ein neues!
Zum Thema:
Da wird es sich wohl um einen Folgefehler handeln. Wie schaut die gesamte Datei aus?
|
|
|
04/18/2012, 23:41
|
#3
|
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
|
Der Code ist jetzt nur so unleserlich, weil ich es aus der PDF rauskopiert habe. Die Leerzeichen und so wurden also nicht mit kopiert.
Naja der Code ist einfach in main() drin. Ich wollte nur kurz gucken was dabei rauskommt und dann kommt ein Fehler.
|
|
|
04/18/2012, 23:41
|
#4
|
elite*gold: 0
Join Date: Aug 2010
Posts: 1,204
Received Thanks: 230
|
vielleicht merkst dus ja noch selber, falls nicht:
Der Compiler kann den Fehler nicht richtig definieren und zeigt dir ein fehlendes ; dafür an.
Dein Problem ist aber die zweite for Schleife. Dort muss ein Semikolon hin!
Außer, du willst den unten stehenden Teil darin ausführen dann fehlen dir
die geschweiften Klammern.
Also entweder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b)[COLOR="Red"];[/COLOR]
cout << "#";
cout << endl;
}
}
oder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b) [COLOR="Red"]{[/COLOR]
cout << "#";
cout << endl;
[COLOR="Red"]}[/COLOR]
}
}
|
|
|
04/18/2012, 23:52
|
#5
|
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
|
immernoch der selbe Fehler bei der 2ten Variante
Edit: Sogar bei beiden
|
|
|
04/19/2012, 00:03
|
#6
|
elite*gold: 6
Join Date: Dec 2007
Posts: 249
Received Thanks: 205
|
Quote:
Originally Posted by Defkahn52
immernoch der selbe Fehler bei der 2ten Variante
Edit: Sogar bei beiden
|
Hast du eventuell vergessen bei:
Code:
using namespace std;
Das Semikolon zu setzen? Steht in der Fehlermeldung denn auch die Zeilennummer vom Funktionskopf? Oder hast du eventuell vergessen das Semikolon beim Funktionsaufruf zu setzen? Ansonsten poste doch bitte mal den gesamten Code inkl. Fehlermeldung.
Beide Varianten sind gültig und haben bei mir auf anhieb ein Rechteck erzeugt:
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b) {
cout << "#";
}
cout << endl;
}
}
oder
(deine erste, ebenfalls gültige Variante)
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b)
cout << "#";
cout << endl;
}
}
getestet in Visual C++ 2010 Express
|
|
|
04/19/2012, 02:27
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
lol @ this
Quote:
Naja der Code ist einfach in main() drin. Ich wollte nur kurz gucken was dabei rauskommt und dann kommt ein Fehler.
|
das ist eine FUNKTION (!), der code darf NICHT in main.
er muss darüber oder darunter, wenn du ihn druntersetzt musst du aber ne vorwärtsdeklaration machen:
Code:
#include <windows.h>
#include <iostream>
using namespace std;
void rechteck(int x, int y)
{
for(int a=1; a<=y; ++a)
{
for(int b=1; b<=x; ++b)
cout << "#";
cout << endl;
}
}
int main(void)
{
printf("Rechteck incoming:\n\n");
rechteck(10, 10);
system("PAUSE");
}
und gewöhn dir den einrückungsstil an, den ich hier benutze, also geschweifte klammern immer in eine zeile.
ist übersichtlicher und wohl auch verbreiteter in c++.
und system("PAUSE") ist "böse", aber jetzt bei dem mini teil kein problem...
Quote:
Originally Posted by »Xanton™
vielleicht merkst dus ja noch selber, falls nicht:
Der Compiler kann den Fehler nicht richtig definieren und zeigt dir ein fehlendes ; dafür an.
Dein Problem ist aber die zweite for Schleife. Dort muss ein Semikolon hin!
Außer, du willst den unten stehenden Teil darin ausführen dann fehlen dir
die geschweiften Klammern.
Also entweder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b)[COLOR="Red"];[/COLOR]
cout << "#";
cout << endl;
}
}
oder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b) [COLOR="Red"]{[/COLOR]
cout << "#";
cout << endl;
[COLOR="Red"]}[/COLOR]
}
}
|
erst nachdenken, was die funktion eigentlich tun soll, dann posten, oder die sprache lernen, wasauchimmer...
|
|
|
04/19/2012, 10:50
|
#8
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by Dr. Coxxy
und system("PAUSE") ist "böse", aber jetzt bei dem mini teil kein problem...
|
Wenn du es weißt, wieso benutzt du es dann?
|
|
|
04/19/2012, 16:53
|
#9
|
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
|
OK Coxxys Variante hat jetzt funktioniert, ich lass es jetzt einfach mal mit der anderen Variante obwohls ja eigentlich auch gehen soll.
Naja vielen Dank für eure Hilfe
OK Coxxys Variante hat jetzt funktioniert, ich lass es jetzt einfach mal mit der anderen Variante obwohls ja eigentlich auch gehen soll.
Naja vielen Dank für eure Hilfe
|
|
|
04/19/2012, 17:17
|
#10
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by MoepMeep
Wenn du es weißt, wieso benutzt du es dann?
|
weil es bei dem mist eh keinen unterschied macht.
|
|
|
04/19/2012, 17:55
|
#11
|
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
|
Quote:
Originally Posted by Defkahn52
OK Coxxys Variante hat jetzt funktioniert, ich lass es jetzt einfach mal mit der anderen Variante obwohls ja eigentlich auch gehen soll.
|
Nein, du kannst keine Funktion in einer Funktion erstellen (von lambdas mal abgesehen)!
Funktionen kannst du nur in einem namespace oder in einer Klasse, bzw. Struktur erstellen.
Bei Lambdas ist das etwas anders, aber so weit bist du noch lange nicht.
Ein paar Tipps noch für dich:
-Zählvariablen nennt man in der Regel i, j, l und n.
-Auch wenn du "nur mal schnell was gucken" willst, Formatierung ist Pflicht!
-Vermeide das globale usen von namespaces. Das kann zu Namenskonflikten führen, wenn du unachtsam bist.
Quote:
Originally Posted by »Xanton™
vielleicht merkst dus ja noch selber, falls nicht:
Der Compiler kann den Fehler nicht richtig definieren und zeigt dir ein fehlendes ; dafür an.
Dein Problem ist aber die zweite for Schleife. Dort muss ein Semikolon hin!
Außer, du willst den unten stehenden Teil darin ausführen dann fehlen dir
die geschweiften Klammern.
Also entweder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b)[COLOR="Red"];[/COLOR]
cout << "#";
cout << endl;
}
}
oder
Code:
void rechteck(int x, int y) {
for(int a=1; a<=y; ++a) {
for(int b=1; b<=x; ++b) [COLOR="Red"]{[/COLOR]
cout << "#";
cout << endl;
[COLOR="Red"]}[/COLOR]
}
}
|
Du hast nicht wirklich verstanden was der Code machen soll. Lass es mich kurz formatieren, vielleicht verstehst du es dann.
Dein Code gibt y Rauten in jeweils einer neuen Zeile aus und kein Rechteck!
|
|
|
04/19/2012, 19:15
|
#12
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
######
######
######
######
Sieht aus wie ein Rechteck, nicht? :<
Übrigens sind es x # in y reihen ;o
|
|
|
04/19/2012, 22:06
|
#13
|
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
|
Hmm, meine Antwort bezog sich auf seinen ersten Vorschlag. Nr. 2 habe ich mir gar nicht mehr angesehen und beim Antworten vergessen zu erwähnen.
Und nein, weder Code Nr. 1, welcher eine Raute in y Reihen ausgibt, noch Nr. 2, welcher eine Raute in x*y Zeilen ausgibt, erzielen das gewünschte Ergebnis.
Oder worauf bezog sich deine Antwort?
|
|
|
04/19/2012, 23:37
|
#14
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
Sagt mal, ist mein C++ eingerostet oder wieso sagt keiner was gegen
Code:
for(int b=1; b<=x; ++b);
:<
Was soll denn das Semikolon nach einem Schleifenkopf bewirken?
|
|
|
04/20/2012, 13:58
|
#15
|
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
|
Quote:
Originally Posted by MrSm!th
Sagt mal, ist mein C++ eingerostet oder wieso sagt keiner was gegen
Code:
for(int b=1; b<=x; ++b);
:<
Was soll denn das Semikolon nach einem Schleifenkopf bewirken?
|
Das bewirkt, dass die Variable b x mal um 1 erhöht wird. Das müsste der Optimierer aber entfernen. :>
Siehe meine beiden bisherigen Antworten, denn wie ich zuvor bereits sagte, ergibt das in diesem Fall keinen Sinn.
|
|
|
|
|
Similar Threads
|
Ihr verlangt zuviel !
09/02/2011 - WarRock - 40 Replies
Moin moin,
Mir ist aufgefallen das ihr immer mehr funktionen in den public Hacks verlang und sogar frech werdet.
Damals zu meiner zeit wo ich noch relativ unbekannt war, waren alle mit einem no menu hack und 10 funktionen usw. zufrieden
Wenn dann mal nen D3D mit nen par mehr funktionen erschienen ist, habt ihr euch schon einen abgefreut.
Heute ist es so das ihr nicht genung bekommt.
Ich mein, seht euch meine hacks an?!
Die sind doch wohl mehr als Groß (für public hacks)
Ihr wollt...
|
[S] 1€ PSC rest ! [B] Was verlangt wird
08/21/2011 - elite*gold Trading - 2 Replies
Wie topic titel schon sagt .
Brauche 1€PSC um auf 15$ zukommen da ich noch eine 10€ PSC hierliegen habe.
Verhandelbar.
|
DIvix WTF verlangt Geld
08/11/2009 - Main - 11 Replies
Hi also ich hatte mal vor ätwas längeren Divix geloaded naja alles ok
hab auch noch nie was gehört das was kostet haben ja ein parr
mehr leute und dan kommt ein brief sie wollen von mir 100 euro
aber ich glaube das nich wall über ip könn sie ja kein vertrag machen
?
hatte wer schon mal das gleiche :D
kohlege von mir hatte das auch hatt aber nie was gezahlt der hatte zwei verwarnugen xD und heute nix mehr gekommen
|
All times are GMT +2. The time now is 14:55.
|
|