Veröffentlicht 3. Februar 200223 j Hallo zusammen , hätte da mal ne typische Anfängerfrage und hoffe nicht gleich gesteinigt zu werden Wie kann man in C über Schleifen und Bedingungen eine Raute zeichnerisch mit * darstellen ? Sie sollte z.b. * *** ***** *** * so aussehen aber halt veränderbar sein. Für Tips und Anregungen danke ich schon mal im vorraus !!! stanis P.s. sehe gerade das es keine richtige raute darstellt.
4. Februar 200223 j # include <stdio.h> # include <stdlib.h> void main() { int i,j; char zeichen[5][5] = { {' ', ' ', '*', ' ', ' '}, {' ', '*', '*', '*', ' '}, {'*', '*', '*', '*', '*'}, {' ', '*', '*', '*', ' '}, {' ', ' ', '*', ' ', ' '}, }; for( i=0; i<5; i++) { for( j=0; j<5; j++) { printf("%2c",zeichen[i][j]); } printf("\n"); } printf("\n"); } Ist nur ein Vorschlag meinerseits, gibt sicherlich noch andere Wege ...
4. Februar 200223 j Wie wär's damit? #include <stdio.h> int main(void) { int i, j, a, s; for(i = 1, j = 2, a = 1; i <= 5; i++, a += j) { for(s = 0; s < a; s++) printf("*"); printf("\n"); if(a >= 5) j *= -1; } return 0; } Zur Erklärung: i ist die Zeilenanzahl j ist der Änderungsfaktor (hier 2 Sterne mehr pro Zeile) a ist die aktuelle Anzahl Sterne in einer Zeile und s ist ein dummy um die Sterne auszugeben :OD
4. Februar 200223 j Leider hatte ich es hier falsch dargestellt. Es sollte eigentlich so aussehen ( ohne die " , leider weiß ich net wie man das hier anders darstellen kann ;( * *** ***** *** * und wie kann ich das denn in eine Abfrage einfügen ? Z.b. wenn ich möchte das die Raute an der breitesten Stelle 20 * hat oder halt 10 ??? Fragen über Fragen Danke aber schon mal für die Antworten Original geschrieben von dr.disk Wie wär's damit? #include <stdio.h> int main(void) { int i, j, a, s; for(i = 1, j = 2, a = 1; i <= 5; i++, a += j) { for(s = 0; s < a; s++) printf("*"); printf("\n"); if(a >= 5) j *= -1; } return 0; } Zur Erklärung: i ist die Zeilenanzahl j ist der Änderungsfaktor (hier 2 Sterne mehr pro Zeile) a ist die aktuelle Anzahl Sterne in einer Zeile und s ist ein dummy um die Sterne auszugeben
5. Februar 200223 j Ich hab hier auch noch folgenden Alternativcode. Der erzeugt genau das, was Du wolltest. /* raute.c - SSch Jan. 2002 */ /* Zeichnet eine Raute unter Eingabe */ /* von Höhe und Schrittweite. */ #include <stdio.h> int main(void) { int schritt, hoehe; // Eingabe von Schritt und Höhe der Raute int mitte, breite; // Die mittlere Zeile und deren Breite int i, j; // Dummy's um Raute zu zeichnen // Daten einlesen printf("Höhe: "); scanf("%d", &hoehe); printf("Schritt: "); scanf("%d", &schritt); // Höhe korrigieren, muß ungerade sein if(!(hoehe % 2)) printf("Korrigierte Höhe: %d\n", ++hoehe); // mittlere Zeile berechnen mitte = (hoehe + 1) / 2; // Breite dieser Zeile berechnen breite = (mitte - 1) * 2 * schritt + 1; #ifdef DEBUG // Debug-Informationen (sofern gewünscht) printf("Mitte: %d\nBreite: %d\n", mitte, breite); #endif // erste Raute-Hälfte incl. Mitte for(i = 0; i <= mitte; i++) { for(j = 0; j < (breite - (i * schritt * 2 + 1)) / 2 + schritt; j++) // führende Leerzeichen printf(" "); for(j = 0; j < i * schritt * 2 + 1; j++) // die Sterne ausgeben printf("*"); printf("\n"); } // zweite Hälfte ab Mitte for(i = mitte - 1; i >= 0; i--) { for(j = 0; j < (breite - (i * schritt * 2 + 1)) / 2 + schritt; j++) // führende Leerzeichen printf(" "); for(j = 0; j < i * schritt * 2 + 1; j++) // die Sterne ausgeben printf("*"); printf("\n"); } return 0; } Ok, vielleicht an manchen Stellen etwas seltsam, ist aber auch in einer 1/4 Stunde langen Pause entstanden.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.