Kwadrat z Pętli

0

Witam, staram się zrobić kwadrat z pętli, oto kod:

#include <iostream>
#include <cstdlib>
using namespace std;

int RysujKwadrat()
{
	cout << " -------------------------------" << endl;
	int a = 15;
	do
	{
		cout << "|                               |" << endl;
		a--;
	}
	while(a > 0);
	cout << " -------------------------------" << endl;
}

int main(int argc, char *argv[])
{
	RysujKwadrat;
	system("pause");
} 

Po skompilowaniu pokazuje mi.. nic.
Jak wkleję kod funkcji do int main() działa poprawnie, o co chodzi? :)

0
RysujKwadrat();
0

RysujKwadrat();
Shalom mnie ubiegł :]

0

Hmm a może tak ? :

#include <iostream>
using namespace std;

void RysujKwadrat(int bok = 5)
{
    for(int i = 0; i < bok ;i++)
    {
        for(int j = 0; j < bok; j++)
        {
            if(i == 0 || i == bok-1) cout << "* ";
            else
            {
                if(j == 0 || j == bok-1)
                    cout << "* ";
                else cout << "  ";
            }

        }
        cout << "\n";
    }
}

int main()
{
    int dlBoku;
    cout << "Podaj dlugosc boku: ";
    cin >> dlBoku;
    RysujKwadrat(dlBoku);

    cin.sync();
    cin.get();
    return 0;
}
0

Mam jeszcze jedno pytanie, jest możliwość, żeby jakiś kod zapisać i aby wykonywał się on tylko w tym kwadracie?

0

Albo robisz formatowaną przez ciebie tablice stringów, albo gotoxy

1

kiedyś napisałem sobie klasę do obsługi konsoli może Ci się przyda. Kod pisany dobrych kilka lat temu bez zajomości winapi więc nie ręczę za jego merytoryczną treść. Ale jako tako działa.

#ifndef consol
#define consol

#include <windows>
#include <iostream>

class console
{
        public :

        char znak;

        HANDLE hOut;

        console() {}

        console(int szerokosc,int wysokosc)
        {
                ustaw_okno(szerokosc,wysokosc);
                kolor(15);
                kursor_off();

        }

        // ustawia rozmiar konsoli  s - szerokosc w - wysokosc
        void ustaw_okno(int s,int w)
        {
                HWND console = GetConsoleWindow();
                COORD c = {s, w};
                SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), c);
                ShowWindow(console, SW_MAXIMIZE);
                hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        }

        // czysci ekran konsoli
        void clrscr()
        {
                system( "cls" );
        }

        // wylacza kursor
        void kursor_off()
        {
	        ::HANDLE hConsoleOut = ::GetStdHandle( STD_OUTPUT_HANDLE );
	        ::CONSOLE_CURSOR_INFO hCCI;
	        ::GetConsoleCursorInfo( hConsoleOut, &hCCI );
	        hCCI.bVisible = FALSE;
	        ::SetConsoleCursorInfo( hConsoleOut, &hCCI );
        }

        // wlacza kursor
        void kursor_on()
        {
        	::HANDLE hConsoleOut = ::GetStdHandle( STD_OUTPUT_HANDLE );
	        ::CONSOLE_CURSOR_INFO hCCI;
        	::GetConsoleCursorInfo( hConsoleOut, &hCCI );
	        if ( hCCI.bVisible != TRUE )
        	{
		        hCCI.bVisible = TRUE;
		        ::SetConsoleCursorInfo( hConsoleOut, &hCCI );
        	}
        }

        // skok kursora do pozycji X i Y
        void gotoxy(int x,int y)
        {
                COORD c={x,y};
	        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
        }

        // zmienia kolor napisow color
        // 0.czarny
        // 1.ciemny niebieski
        // 2.ciemny zielony
        // 3.ciemny blekitny
        // 4.ciemny czerwony
        // 5.fioletowy
        // 6.ciemny zolty
        // 7.jasny szary
        // 8.ciemny szary
        // 9.jasny niebieski
        // 10.jasny zielony
        // 11.jasny blekitny
        // 12.jasny czerwony
        // 13.rozowy
        // 14.jasny zolty
        // 15.bialy
        void kolor(int color)
        {
                SetConsoleTextAttribute(hOut,color);
        }

        void background(int color)
        {
                
        }

        // gX = wspolzedne gorny rog X, gY wspolzedne gorny rog Y
        // dX i dY -- || -- dolne rogi
        // color - kolor
        // chr = numer znaku ascii
        // pusta - czy czyscic wnetrze ramki przy rysowaniu
        void ramka(int gX,int gY,int dX, int dY, int color, int chr,bool pusta)
        {
                int i,j;

                kolor(color);
                for(i=gX; i<=dX; i++)
                {
                        gotoxy(i,gY);
                        std :: cout << char(chr);

                        gotoxy(i,dY);
                        std :: cout << char(chr);
                }

                for(j=gY; j<=dY; j++)
                {
                        gotoxy(gX,j);
                        std :: cout << char(chr);

                        gotoxy(dX,j);
                        std :: cout << char(chr);
                }

                if (pusta == false)
                {
                        for (j=gY+1; j<=dY-1; j++)
                        {
                                for (i=gX+1;i<=dX-1; i++)
                                {
                                        gotoxy(i,j);
                                        std :: cout << char(255);
                                }
                        }
                }
        }

        // ramka rysowana za pomoca 2 cienkich lini
        // gX = wspolzedne gorny rog X, gY wspolzedne gorny rog Y
        // dX i dY -- || -- dolne rogi
        // color - kolor
        // pusta - czy czyscic wnetrze ramki przy rysowaniu
        void ramka_dwuliniowa(int gX,int gY,int dX, int dY, int color, bool pusta)
        {
        int i,j;
                kolor(color);
                for(i=gX; i<=dX; i++)
                {
                        gotoxy(i,gY);
                        std :: cout << char(205);

                        gotoxy(i,dY);
                        std :: cout << char(205);
                }

                for(j=gY; j<=dY; j++)
                {
                        gotoxy(gX,j);
                        std :: cout << char(186);

                        gotoxy(dX,j);
                        std :: cout << char(186);
                }

                gotoxy(gX,gY);
                std :: cout << char(201);
                gotoxy(dX,dY);
                std :: cout << char(188);
                gotoxy(gX,dY);
                std :: cout << char(200);
                gotoxy(dX,gY);
                std :: cout << char(187);

                if (pusta == false)
                {
                        for (j=gY+1; j<=dY-1; j++)
                        {
                                for (i=gX+1;i<=dX-1; i++)
                                {
                                        gotoxy(i,j);
                                        std :: cout << char(255);
                                }
                        }
                }

        }

        // ramka rysowana za pomoca 1 cienkiej lini
        // gX = wspolzedne gorny rog X, gY wspolzedne gorny rog Y
        // dX i dY -- || -- dolne rogi
        // color - kolor
        // pusta - czy czyscic wnetrze ramki przy rysowaniu
        void ramka_liniowa(int gX,int gY,int dX, int dY, int color, bool pusta)
        {
                int i,j;

                kolor(color);
                for(i=gX; i<=dX; i++)
                {
                        gotoxy(i,gY);
                        std :: cout << char(196);

                        gotoxy(i,dY);
                        std :: cout << char(196);
                }

                for(j=gY; j<=dY; j++)
                {
                        gotoxy(gX,j);
                        std :: cout << char(179);

                        gotoxy(dX,j);
                        std :: cout << char(179);
                }

                gotoxy(gX,gY);
                std :: cout << char(218);
                gotoxy(dX,dY);
                std :: cout << char(217);
                gotoxy(gX,dY);
                std :: cout << char(192);
                gotoxy(dX,gY);
                std :: cout << char(191);

                if (pusta == false)
                {
                        for (j=gY+1; j<=dY-1; j++)
                        {
                                for (i=gX+1;i<=dX-1; i++)
                                {
                                gotoxy(i,j);
                                std :: cout << char(255);
                                }
                        }
                }

        }

        // wyswietla tekst na danej pozycji na ekranie
        // x i y - pozycja na erkanie
        // s - napis
        void textXY(int x,int y,std :: string s)
        {
                gotoxy(x,y);
                std :: cout << s;        
        }

        void textXY(int x,int y,char s)
        {
                gotoxy(x,y);
                std :: cout << s;        
        }

        // wyswietla pojustowany tekst
        // x i y - pozycja na ekranie
        // s - napis
        // dkugosc_wiersza - co ile znakow kursor ma przechodzic do nowego wiersza
        void textXY(int x,int y, std :: string s,int dlugosc_wiersza)
        {
                unsigned int i = 0 ,j = 0,last = 0 ,obieg_petli = 0,ograniczenie = 0;
                bool czy_przejsc_do_nastepnej = false;

                ograniczenie = dlugosc_wiersza + last;

                gotoxy(x,y);
                for (unsigned i = 0; i<s.length(); i++)
                {
                       if (czy_przejsc_do_nastepnej == true) gotoxy(x,y);

                       czy_przejsc_do_nastepnej = false;

                       if ((i >= dlugosc_wiersza + j) && (s[i] == ' '))
                       {
                                y++;
                                last = i + 1;
                                czy_przejsc_do_nastepnej = true;
                                obieg_petli++;
                                j = j + dlugosc_wiersza;

                       } else
                       {
                              std :: cout << s[i];
                       }
                }
        }

        // wysrodkowany tekst (1 linijkowy)
        void textY(int y,std :: string s)
        {
                int srodek;
                srodek = 40 - s.length() / 2;
                gotoxy(srodek,y);
                std :: cout << s;
        }

        std::string toString(int n)
        {
            std::string tmp, ret;
            if(n < 0)
            {
                ret = "-";
                n = -n;
            }

            do
            {
                tmp += n % 10 + 48;
                n -= n % 10;
            }
            while(n /= 10);

            for(int i = tmp.size()-1; i >= 0; i--)
                ret += tmp[i];
            return ret;
        }

};

#endif

1 użytkowników online, w tym zalogowanych: 0, gości: 1