zielak123 Temat założony przez niniejszego użytkownika |
[C++]Rysowanie trojkata » 2014-10-17 17:51:29 Budowanie trojkata prostokatnego o podanej wartosci w pionie i poziomie. Poki co kod tworzy prostokatny, rownoboczny, tzn tyle ile w pionie tyle ma w poziomie. #include <iostream>
using namespace std;
int main( int argc, char * argv[] ) { int pion, poziom; cout << "ile w pionie ? :"; cin >> pion; cout << endl; cout << "ile w poziomie ? :"; cin >> poziom; cout << endl; for( int i = 0; i < pion; i++ ) { for( int j = 0; j <= i; j++ ) { cout << "*"; } cout << endl; } cin.sync(); return 0; }
Wiem, ze musze wpleciec petle do petli, tylko nie wiem w ktorym miejscu (poczatki z c++). |
|
SocrateZ |
» 2014-10-17 22:05:18 To jest bardziej zawiłe niż myślisz. Nie uda ci się utworzyć "ładnego" trójkąta w konsoli. Pętle masz dobre, jednak gorzej z implementacją. Jeżeli już tak bardzo chcesz to zrobić, musisz sprawdzić co jest większe (pion czy poziom). Wyliczyć przesunięcie krokowe dla odpowiedniej pętli (dla mniejszej 1, dla większej max/min gdzie max to większa a min to mniejsza liczba rozmiaru ściany trójkąta). Na podstawie przesunięcia krokowego możesz mniej więcej obliczyć kiedy ta mniejsza wartość może zostać przesunięta (a więc kiedy może zostać dodany kolejny znak *). |
|
zielak123 Temat założony przez niniejszego użytkownika |
» 2014-10-17 23:00:27 Dobre, zebym jeszcze wiedzial o czym ty gadasz XD Trojkat nie ma byc dobry, to nie oto w tym chodzi, poprostu mam takie zadanie. |
|
SocrateZ |
» 2014-10-18 11:13:08 Działający przykład: #include <iostream>
using namespace std;
int main( int argc, char * argv[] ) { int pion = 0, poziom = 0; int max = 0, min = 0; float iter = 0.f; cout << "ile w pionie ? :"; cin >> pion; cout << endl; cout << "ile w poziomie ? :"; cin >> poziom; cout << endl; if( pion > poziom || pion < poziom ) { max = pion; min = poziom; iter =( float ) poziom /( float ) pion; float stepper = iter; int z = 1; for( int x = 0; x < pion; ++x ) { for( int y = 0; y < z; ++y ) cout << "*"; cout << endl; stepper += iter; z =( int ) floor( stepper ); } } else for( int x = 0; x < pion; ++x ) { for( int y = 0; y <= x; ++y ) cout << "*"; cout << endl; } cin.sync(); getchar(); return 0; } Możesz pozmieniać wartość z: z = (int)floor( stepper ); //z = (int)ceil( stepper ); //z = (int)stepper; aby zobaczyć jak to wpływa na wynik przy nierównomiernych bokach. FLOOR (podłoga - zaokrąglanie w dół) CEIL (sufit - zaokrąglanie do góry) i rzutowanie bez funkcji - zaokrąglanie normalne ( < 1,5 - w dół, >= 1,5 - do góry ) |
|
zielak123 Temat założony przez niniejszego użytkownika |
» 2014-10-18 15:35:22 z =( int ) floor( stepper );
Pojawia sie blad w tej lini: Getchar was not declared in this scope. |
|
1aam2am1 |
» 2014-10-18 15:45:41 |
|
zielak123 Temat założony przez niniejszego użytkownika |
» 2014-10-18 16:01:21 Ok teraz dziala, tylko teraz mam pytania. Co oznacza: int pion = 0, poziom = 0; int max = 0, min = 0;
float iter = 0.f;
stepper += iter
Btw. Jaka ksiazke polecacie do c++ od podstaw. |
|
1aam2am1 |
» 2014-10-18 16:33:17 max i min chyba po nic. Tak wnioskuje z kodu. |
|
« 1 » 2 3 |