Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 14:55

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Warum verlangt er ein ; ?

Discussion on Warum verlangt er ein ; ? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Defkahn52's Avatar
 
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
Defkahn52 is offline  
Old 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?
Nightblizard is offline  
Old 04/18/2012, 23:41   #3
 
Defkahn52's Avatar
 
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.
Defkahn52 is offline  
Old 04/18/2012, 23:41   #4
 
potato.'s Avatar
 
elite*gold: 0
The Black Market: 119/0/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]
}
}
potato. is offline  
Thanks
1 User
Old 04/18/2012, 23:52   #5
 
Defkahn52's Avatar
 
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
Defkahn52 is offline  
Old 04/19/2012, 00:03   #6
 
Digital Shadow's Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 249
Received Thanks: 205
Quote:
Originally Posted by Defkahn52 View Post
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
Digital Shadow is offline  
Thanks
1 User
Old 04/19/2012, 02:27   #7
 
Dr. Coxxy's Avatar
 
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™ View Post
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...
Dr. Coxxy is offline  
Thanks
2 Users
Old 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 View Post
und system("PAUSE") ist "böse", aber jetzt bei dem mini teil kein problem...
Wenn du es weißt, wieso benutzt du es dann?
MoepMeep is offline  
Old 04/19/2012, 16:53   #9
 
Defkahn52's Avatar
 
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
Defkahn52 is offline  
Old 04/19/2012, 17:17   #10
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by MoepMeep View Post
Wenn du es weißt, wieso benutzt du es dann?
weil es bei dem mist eh keinen unterschied macht.
Dr. Coxxy is offline  
Old 04/19/2012, 17:55   #11
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Quote:
Originally Posted by Defkahn52 View Post
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™ View Post
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!
Nightblizard is offline  
Old 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
MoepMeep is offline  
Old 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?
Nightblizard is offline  
Old 04/19/2012, 23:37   #14


 
MrSm!th's Avatar
 
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?
MrSm!th is offline  
Thanks
1 User
Old 04/20/2012, 13:58   #15
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Quote:
Originally Posted by MrSm!th View Post
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.
Nightblizard is offline  
Thanks
1 User
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.