Auf dem Kopf Stehendes Viereck
-
Hallo,
ich bin relativ neu in C und ich habe folgendes Problem!:
Ich will ein Viereck im Terminal machen was "auf dem Kopf" steht
Das heißt ein Dreieck und ein Umgedrehtes Dreieck aufeinanderIch habe es mit Folgendem Quelltext versucht
#include <stdio.h> int main() { int hoehe; printf("Gib die Höhe ein!: "); scanf("%d", &hoehe); int z_a, z_b, z_c; int z_d, z_e, z_f; // Dreieck for ( z_d = 1; z_d <= hoehe; z_d ++) // für jede zeile { for ( z_f = 1; z_f <= hoehe - z_d ; z_f ++) //z_d ist der aktuelle folgeschritt { printf(" "); } for ( z_e = 0; z_e <= 2*hoehe + (z_d*2); z_e ++) { printf("#"); } printf("\n"); } // Umgedrehtes Dreieck for ( z_a = 1; z_a <= hoehe; z_a ++) // für jede zeile { for ( z_c = 1; z_c <= hoehe + z_a ; z_c ++) //z_a ist der aktuelle folgeschritt { printf(" "); } for ( z_b = 0; z_b <= 2*hoehe - (z_a*2); z_b ++) { printf("#"); } printf("\n"); } }
Irgendwie funktioniert es nicht und ich habe absulut gar keinen blassen schimmer wiso nicht
Ich probiere es schon seit einiger Zeit aber es will einfach nicht Klappen
raus kommt sowas:############# ############### ################# ################### ##################### ######### ####### ##### ### #
wäre echt nett wenn mir irgendjemand helfen könnte^^
am besten gleich einen vollständigen quelltext
MFG
-
In deiner Schreibweise:
for ( z_d = hoehe; z_d >= 1; z_d --) // für jede zeile { for ( z_f = 1; z_f <= hoehe + z_d ; z_f ++) //z_d ist der aktuelle folgeschritt { printf(" "); } for ( z_e = 0; z_e <= 2*hoehe - (z_d*2); z_e ++) { printf("#"); } printf("\n"); }
Aber deine Schreibweise ist, trotz der sehr lobenswerten Kommentare
, sehr unübersichtlich
. Wie soll irgendjemand sich erschließen, was z_a, z_b, z_c, z_d, z_e und z_f und der Unterschied zwischen diesen ist?
Mach's doch hübsch übersichtlich so:
#include <stdio.h> #include <assert.h> void print_line(unsigned line, unsigned max_height) { unsigned i; assert(line <= max_height); for (i = 0; i < max_height - line; ++i) putchar(' '); for (i = 0; i < 2*(line-1) + 1; ++i) putchar('#'); putchar('\n'); } void print_diamond(unsigned height) { unsigned line; for (line = 1; line < height; ++line) print_line(line, height); for (; line > 0; --line) print_line(line, height); } int main() { unsigned int height; printf("Gib die Höhe ein!: "); scanf("%u", &height); print_diamond(height); }
Da braucht man nicht einmal Kommentare, um dem Code halbwegs zu folgen.
-
vielen dank
-
#define K 4 int main() { int z,s; for( z=-K; z<=K; ++z,puts("") ) for( s=-K; s<=K; ++s ) putchar(" #"[s>=abs(z)-K && s<=K-abs(z)]); return 0; }
-
Danke!
Falls es es iwen interessiert hier ist der vollständige Quelltext vom Viereck ^^#include <stdio.h> int main() { int hoehe; printf("Hallo! Gib den Durchmesser des Vierecks an "); scanf("%d", &hoehe); int z_a, z_b, z_c; int z_d, z_e, z_f; // Dreieck for ( z_d = hoehe; z_d >= 1; z_d --) // für jede zeile { for ( z_f = 1; z_f <= hoehe + z_d ; z_f ++) //z_d ist der aktuelle folgeschritt { printf(" "); } for ( z_e = 0; z_e <= 2*hoehe - (z_d*2); z_e ++) { printf("##"); } printf("\n"); } // Umgedrehtes Dreieck for ( z_a = 1; z_a <= hoehe; z_a ++) // für jede zeile { for ( z_c = 1; z_c <= hoehe + z_a ; z_c ++) //z_a ist der aktuelle folgeschritt { printf(" "); } for ( z_b = 0; z_b <= 2*hoehe - (z_a*2); z_b ++) { printf("##"); } printf("\n"); } }