little.Lizard Geschrieben 24. September 2004 Geschrieben 24. September 2004 Moin! Erstmal hi@all, bin Frischling und noch ein wenig schüchtern.. Bin nicht mehr ganz der C++ Neuling, aber im Moment häng ich grad ein wenig.. Ich möchte eine kleine Funktion schreiben die eine Integerzahl und ein Zeichen nimmt und mir daraus ein Quadrat bastelt. Das ganze würde dann in etwa so aussehen: Zahl: 6 Zeichen: * ****** * ---- * * ---- * * ---- * * ---- * ****** (' - ' = Leerzeichen) Ich soll die ganze Sache mit 2 for-Schleifen realisieren, bei mir sind es mittlerweile 4 und es passiert immer noch nicht was passieren soll.. Es ist mir zwar jetzt schon peinlich, aber hier ist mal mein momentaner Code. int design2(int zahl, char zeic) { for (int i=1;i<=zahl;i++) { cout << zeic; } cout << endl; for (int j;j<=(zahl-2);j++) { cout << zeic; for (int k=1;k<=(zahl-2);k++) { cout << " "; } cout << zeic << endl; } for (int l=1;l<=zahl;l++) { cout << zeic; } return 0; } Hab wahrscheinlich nur wieder zu kompliziert und um 1000 Ecken gedacht. Ich hoffe jemand von euch hat Erbarmen mit meiner Wenigkeit.. Gruß, die kleine (auf der Leitung stehende) Echse EDIT: .. .. Hab meinen Fehler grad gefunden.. for (int j[COLOR=RoyalBlue]=1[/COLOR];j<=(zahl-2);j++) Wäre trotzdem nett wenn mir jemand eine vielleicht kürzere Variante aufschreiben könnte, 4 Schleifen sind schon zu viel.. Zitieren
kLeiner_HobBes Geschrieben 24. September 2004 Geschrieben 24. September 2004 #include <iostream> using namespace std; int design2(int seite, char z) { for (int i = 0; i < seite; i++) { cout << z; for (int j = 2; j < seite; j++) { if (i == 0 || i == seite - 1) cout << z; else cout << " "; } cout << z << endl; } return 0; } void main() { design2(12,'*'); cin.get(); } wenn du Probleme mit Verständnis hast, meld dich einfach Gruß Zitieren
little.Lizard Geschrieben 24. September 2004 Autor Geschrieben 24. September 2004 Ist alles absolut verständlich, danke schön. ^^ Ich sollte mir wohl mal ne Tasse Kaffee holen.. Zitieren
Guybrush Threepwood Geschrieben 24. September 2004 Geschrieben 24. September 2004 oder so: void design2(int i, char z) { for (int j=-1; ++j<i;printf ("\n")) for (int a=-1; ++a<i;!j||j==i-1?printf("%c",z):!a||a==i-1?printf ("%c",z):printf(" ")); } [/PHP] obwohl kLeiner_HobBes eine Abfrage weniger hat. Zitieren
kLeiner_HobBes Geschrieben 24. September 2004 Geschrieben 24. September 2004 Wenn du es so kryptisch machen willst, dann verwende doch putc(0x0a,stdout); für eine neue Zeile und putc(0x20,stdout); für ein Leerzeichen und putc((int)z,stdout); für das variable Zeichen. Für irgendwas ist C ja gut *lach Zitieren
Guybrush Threepwood Geschrieben 24. September 2004 Geschrieben 24. September 2004 Es ging mir mehr um die Komprimierung (auch wenn da noch mehr rauszuholen ist) als um das kryptische Zitieren
little.Lizard Geschrieben 29. September 2004 Autor Geschrieben 29. September 2004 Hello again! Wäre net wenn nochmal jemand einen Blick auf meinen Code werfen könnte. Das Prinzip ist das selbe wie oben, Eingabe einer Zahl und eines Zeichens, die Ausgabe soll eine auf dem Kopf stehende Pyramide sein. In etwa so: Zahl: 6 Zeichen:* ****** -**** --** Zahl: 7 Zeichen: * ******* -***** --*** ---* (' - ' = Leerzeichen) Hier mein jetztiger Code: int design3(int zahl, char zeic) { for (int i=1;i<=zahl;i++) { for (int j=0;j<=i-2;j++) { cout << " "; } for (int k=1;k<=zahl;k++) { cout << zeic; } zahl-=2; cout << endl; } return 0; } Funktioniert gut außer dass er mir die letzte Zeile nicht ausgibt. Und ich seh vor lauter Code den Fehler net.. *need coffee* Außerdem hab ich schon wieder zu viele Schleifen.. Muchas Gracias schonmal.. so long Zitieren
kLeiner_HobBes Geschrieben 29. September 2004 Geschrieben 29. September 2004 Daß die Pyramide nicht bis zum Schluß gezeichnet wird, liegt daran, daß du zahl ja immer um 2 dekrementierst, in der äußersten Schleife aber auch i und zahl vergleichst. Wenn du zahl etwas größer wählst, siehst du, daß er noch mehr Ebenen ausläßt. i wird immer größer, aber zahl immer kleiner Hier ein Code, der zumindest bei mir funktioniert hat:void design4(int zahl, char zeic) { for (int i=0; i < zahl; i++) { for (int j = 0; j < zahl - i; j++) if (j < i) cout << " "; else cout << zeic; cout << endl; } } Zitieren
little.Lizard Geschrieben 29. September 2004 Autor Geschrieben 29. September 2004 Dann sag ich vielmals danke, funktioniert alles und ich habs auch wunderbar verstanden. ^^ Selbst draufkommen ist immer nur so ne Sache bei mir.. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.