Ĺadny brzuch
Witam
Na lekcji programowania, profesor kazał zrobić choinkę w c :). Więc zrobiłem takie coś:
#include<stdio.h> #include<conio.h> void main() { clrscr(); printf("\t\t*\n"); printf("\t *i*\n"); printf("\t *i*i*i*\n"); printf("\t *i*i*i*i*\n"); printf("\t\t#\n"); getch(); }
Wszystko ok, choinka wyszła, tylko czy jest jakiś inny sposób bez spacji? Kazał się zastanowić, a ja nie wiem... Bo \t odpowiada za TAB, więc może da radę jakoś zrobić to? Bez spacji w pozostałych linijkach, aby zachować proporcje choinki?
I 2 problem: czy da jakoś programowo się tą choinkę obrócić? :D Np. o 90 stopni? Bo ręcznie to mam:
#include<stdio.h> #include<conio.h> void main() { clrscr(); printf(" *\n"); printf(" i*\n"); printf(" *i*\n"); printf(" i*i*\n"); printf("#*i*i*\n"); printf(" i*i*\n"); printf(" *i*\n"); printf(" i*\n"); printf(" *\n"); getch(); }
Ale czy da się jakoś to programowo?
Z góry dziękuję za pomoc.
Mozesz uzyc petli zeby pisac odpowiednia ilosc spacji przed choinka. Zeby odwrocic zrob sobie np tablice charow 10x10 wypelniona spacjami i tam wpisuj gwiazdki, a pozniej dokonaj na niej rotacji i wypisz na ekran - ale to juz wyzsza szkola jazdy jak na poczatkujacego.
#include <stdio.h> #include <conio.h> char buffer[10][10]; char obrocona[10][10]; void main() { //int szer=15, odl=30; //for (int i=0; i<szer; i++) //{ // for (int j=0; j<odl-i; j++) // printf(" "); // printf("*"); // for (int j=0; j<i; j++) // printf("i*"); // printf("\n"); //} //for (int i=0; i<odl; i++) // printf(" "); //printf("#"); // getch(); //------------------------------------ // czyszczenie bufora for (int i=0; i<10; i++) for (int j=0; j<10; j++) buffer[i][j]=' '; printf("Przed obrotem:\n\n"); // tworzenie choinki w buforze for (int i=0; i<5; i++) { buffer[4-i][i] = '*'; for (int j=0; j<i*2; j+=2) { buffer[5-i+j][i] = 'i'; buffer[6-i+j][i] = '*'; } } buffer[4][5] = '#'; // wyświetlanie bufora for (int i=0; i<10; i++) { for (int j=0; j<10; j++) printf("%c", buffer[j][i]); printf("\n"); } // obracanie for (int i=0; i<10; i++) for (int j=0; j<10; j++) obrocona[i][j] = buffer[j][9-i]; printf("\n\nPo obrocie:\n\n"); // wyświetlanie bufora for (int i=0; i<10; i++) { for (int j=0; j<10; j++) printf("%c", obrocona[j][i]); printf("\n"); } getch(); }
Ilustracja idei Deadeye'a. Tak rzeczywiście najprościej.
Tamto zakomentowane na początku to samo drukowanie choinki.
Część z obracaniem starałem się pisać tak, abyś - jeszcze jako początkujący - zrozumiał ;) Dlatego też nie skorzystałem np. z funkcji. Jak już je poznasz, będziesz mógł znacznie skrócić kod.
Zwykła choinka:
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[j][i]); } printf("\n"); }
Odwrócona choinka (można zamienić liczniki w pętlach):
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[i][j]); } printf("\n"); }
Powyższy sposób jest również poprawny, ale chodzi mi o to, że wystarczy zamienić dwa znaki w kodzie, aby po prostu odwrócić tablicę ;)
Użytkownik Kozack edytował ten post 17 październik 2008, 23:01
Zwykła choinka:
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[j][i]); } printf("\n"); }
Odwrócona choinka (można zamienić liczniki w pętlach):
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[i][j]); } printf("\n"); }
Powyższy sposób jest również poprawny, ale chodzi mi o to, że wystarczy zamienić dwa znaki w kodzie, aby po prostu odwrócić tablicę ;)
Autor napisal ze chce odwrocic choinke (w domysle: juz zrobiona), a nie ze chce narysowac odwrocona ;) Przynajmniej ja go tak zrozumialem, bo narysowac ja od razu odwrocona to faktycznie banal.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Na lekcji programowania, profesor kazał zrobić choinkę w c :). Więc zrobiłem takie coś:
#include<stdio.h> #include<conio.h> void main() { clrscr(); printf("\t\t*\n"); printf("\t *i*\n"); printf("\t *i*i*i*\n"); printf("\t *i*i*i*i*\n"); printf("\t\t#\n"); getch(); }
Wszystko ok, choinka wyszła, tylko czy jest jakiś inny sposób bez spacji? Kazał się zastanowić, a ja nie wiem... Bo \t odpowiada za TAB, więc może da radę jakoś zrobić to? Bez spacji w pozostałych linijkach, aby zachować proporcje choinki?
I 2 problem: czy da jakoś programowo się tą choinkę obrócić? :D Np. o 90 stopni? Bo ręcznie to mam:
#include<stdio.h> #include<conio.h> void main() { clrscr(); printf(" *\n"); printf(" i*\n"); printf(" *i*\n"); printf(" i*i*\n"); printf("#*i*i*\n"); printf(" i*i*\n"); printf(" *i*\n"); printf(" i*\n"); printf(" *\n"); getch(); }
Ale czy da się jakoś to programowo?
Z góry dziękuję za pomoc.
Mozesz uzyc petli zeby pisac odpowiednia ilosc spacji przed choinka. Zeby odwrocic zrob sobie np tablice charow 10x10 wypelniona spacjami i tam wpisuj gwiazdki, a pozniej dokonaj na niej rotacji i wypisz na ekran - ale to juz wyzsza szkola jazdy jak na poczatkujacego.
#include <stdio.h> #include <conio.h> char buffer[10][10]; char obrocona[10][10]; void main() { //int szer=15, odl=30; //for (int i=0; i<szer; i++) //{ // for (int j=0; j<odl-i; j++) // printf(" "); // printf("*"); // for (int j=0; j<i; j++) // printf("i*"); // printf("\n"); //} //for (int i=0; i<odl; i++) // printf(" "); //printf("#"); // getch(); //------------------------------------ // czyszczenie bufora for (int i=0; i<10; i++) for (int j=0; j<10; j++) buffer[i][j]=' '; printf("Przed obrotem:\n\n"); // tworzenie choinki w buforze for (int i=0; i<5; i++) { buffer[4-i][i] = '*'; for (int j=0; j<i*2; j+=2) { buffer[5-i+j][i] = 'i'; buffer[6-i+j][i] = '*'; } } buffer[4][5] = '#'; // wyświetlanie bufora for (int i=0; i<10; i++) { for (int j=0; j<10; j++) printf("%c", buffer[j][i]); printf("\n"); } // obracanie for (int i=0; i<10; i++) for (int j=0; j<10; j++) obrocona[i][j] = buffer[j][9-i]; printf("\n\nPo obrocie:\n\n"); // wyświetlanie bufora for (int i=0; i<10; i++) { for (int j=0; j<10; j++) printf("%c", obrocona[j][i]); printf("\n"); } getch(); }
Ilustracja idei Deadeye'a. Tak rzeczywiście najprościej.
Tamto zakomentowane na początku to samo drukowanie choinki.
Część z obracaniem starałem się pisać tak, abyś - jeszcze jako początkujący - zrozumiał ;) Dlatego też nie skorzystałem np. z funkcji. Jak już je poznasz, będziesz mógł znacznie skrócić kod.
Zwykła choinka:
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[j][i]); } printf("\n"); }
Odwrócona choinka (można zamienić liczniki w pętlach):
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[i][j]); } printf("\n"); }
Powyższy sposób jest również poprawny, ale chodzi mi o to, że wystarczy zamienić dwa znaki w kodzie, aby po prostu odwrócić tablicę ;)
Użytkownik Kozack edytował ten post 17 październik 2008, 23:01
Zwykła choinka:
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[j][i]); } printf("\n"); }
Odwrócona choinka (można zamienić liczniki w pętlach):
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("%c", buffer[i][j]); } printf("\n"); }
Powyższy sposób jest również poprawny, ale chodzi mi o to, że wystarczy zamienić dwa znaki w kodzie, aby po prostu odwrócić tablicę ;)
Autor napisal ze chce odwrocic choinke (w domysle: juz zrobiona), a nie ze chce narysowac odwrocona ;) Przynajmniej ja go tak zrozumialem, bo narysowac ja od razu odwrocona to faktycznie banal.