Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Rysowanie trojkata

Ostatnio zmodyfikowano 2014-10-22 17:51
Autor Wiadomość
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.

C/C++
#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++).
P-118687
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 *).
P-118735
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.
P-118740
SocrateZ
» 2014-10-18 11:13:08
Działający przykład:

C/C++
#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 );
            //z = (int)ceil( stepper );
            //z = (int)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 )
P-118748
zielak123
Temat założony przez niniejszego użytkownika
» 2014-10-18 15:35:22
C/C++
z =( int ) floor( stepper );

Pojawia sie blad w tej lini: Getchar was not declared in this scope.
P-118776
1aam2am1
» 2014-10-18 15:45:41
C/C++
#include <cmath>
P-118778
zielak123
Temat założony przez niniejszego użytkownika
» 2014-10-18 16:01:21
Ok teraz dziala, tylko teraz mam pytania.

Co oznacza:
C/C++
int pion = 0, poziom = 0; // po Zmianie wartosci nie zauwazylem jakichkolwiek zmian w budowie trojkata
int max = 0, min = 0; // j.w

float iter = 0.f;

stepper += iter

Btw.
Jaka ksiazke polecacie do c++ od podstaw.
P-118783
1aam2am1
» 2014-10-18 16:33:17
max i min chyba po nic. Tak wnioskuje z kodu.
P-118785
« 1 » 2 3
  Strona 1 z 3 Następna strona