NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Pokročilá práce s konzolí v C++

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Honza
Neregistrovaný
Avatar
Honza:20.10.2013 11:56

Díky moc. Hodně užitečný článek

 
Odpovědět
20.10.2013 11:56
Avatar
mmmmmmm11111145:12.1.2015 5:41

cav som tu novy takze zdravim :)

chalani hodte sem prosim funkcny cely kod, lebo tie farby su podla mna absolutne neprehladne a stale mi to nechce spustit :/

"system("color 12") funguje ako ma ale ostatne nie teda aspon neviem ako nanho"
vopred dakujem

Editováno 12.1.2015 5:44
 
Odpovědět
12.1.2015 5:41
Avatar
Odpovídá na mmmmmmm11111145
Libor Šimo (libcosenior):11.3.2015 14:13
#include <iostream>
#include <windows.h>

//barvu získáme jako hodnotu barvy textu přičtenou k šestnáctinásobku hodnoty barvy pozadí
#define NOVA_FARBA SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), background_color*16+foreground_color)
#define ZELENA_FARBA SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), zelena)

typedef enum { cierna, tmavo_modra, tmavo_zelena, tmavo_azurova, tmavo_cervena, tmavo_purpurova, tmavo_zlta, seda, tmavo_seda,
               modra, zelena, azurova, cervena, purpurova, zlta, biela
} FARBA;

void set_text_color(int background_color, int foreground_color);
void colored_cout(int background_color, int foreground_color, const char* text);
void colored_cout(int background_color, int foreground_color, bool value);
void colored_cout(int background_color, int foreground_color, short number);
void colored_cout(int background_color, int foreground_color, int number);
void colored_cout(int background_color, int foreground_color, float number);
void colored_cout(int background_color, int foreground_color, double number);

using namespace std;

int main()
{
    set_text_color(biela, tmavo_azurova);
    cout << "Tento text je tmavo azurovy na bielom podklade" << endl;
    set_text_color(biela, cervena);
    cout << "Tento text je cerveny na bielom podklade" << endl;
    set_text_color(biela, modra);
    cout << "Tento text je modry na bielom podklade" << endl;
    set_text_color(modra, biela);
    cout << "Tento text je biely na modrom podklade" << endl;

    colored_cout(biela, modra, "Popokatepetl");
    cout << endl;
    colored_cout(cervena, modra, true);
    cout << endl;
    colored_cout(zlta, azurova, 25);
    cout << endl;
    colored_cout(seda, zlta, 258.658);
    cout << endl;

    /*for(int i = 0; i<16; i++) {
        for(int j = 0; j<16; j++) {
            colored_cout(i, j, i*16+j);
            colored_cout(i, j, " Hello world\n");
        }
    }*/

    cin.get();
    return 0;
}

void set_text_color(int background_color, int foreground_color)
{
        NOVA_FARBA;
}
void colored_cout(int background_color, int foreground_color, const char* text)
{
        NOVA_FARBA;//nová barva
        cout << text;
        ZELENA_FARBA;//nastavení původní (základní) barvy
}
void colored_cout(int background_color, int foreground_color, bool value)
{
        NOVA_FARBA;//nová barva
        cout << value;
        ZELENA_FARBA;//původní barva
}
void colored_cout(int background_color, int foreground_color, short number)
{
        NOVA_FARBA;//nová barva
        cout << number;
        ZELENA_FARBA;//původní barva
}
void colored_cout(int background_color, int foreground_color, int number)
{
        NOVA_FARBA;//nová barva
        cout << number;
        ZELENA_FARBA;//původní barva
}
void colored_cout(int background_color, int foreground_color, float number)
{
        NOVA_FARBA;//nová barva
        cout << number;
        ZELENA_FARBA;//původní barva
}
void colored_cout(int background_color, int foreground_color, double number)
{
        NOVA_FARBA;//nová barva
        cout << number;
        ZELENA_FARBA;//původní barva
}

Chcem sa ale spýtať.
Je vhodné používať také makrá aké som použil?

Editováno 11.3.2015 14:15
Odpovědět
11.3.2015 14:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
nf fn
Člen
Avatar
nf fn:14.7.2016 12:10

Myslím že v C++ se dají makra ve většině případů obejít a neměla by se používat.

 
Odpovědět
14.7.2016 12:10
Avatar
Zbyňa
Člen
Avatar
Zbyňa:9.4.2017 1:51

např const nebo template na fce

 
Odpovědět
9.4.2017 1:51
Avatar
Imrich Vízi
Člen
Avatar
Imrich Vízi:16.6.2019 17:38
void colored_cout(int background_color, int foreground_color, const char* text)
{
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), background_color*16+foreground_color);//nová barva
        cout << text;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), grey);//nastavení původní (základní) barvy
}

Zrejme by mala byť použitá dereferencia

cout << *text;
 
Odpovědět
16.6.2019 17:38
Avatar
Odpovídá na Imrich Vízi
Zdeněk Pavlátka:17.6.2019 13:13

Neměla. char* je zde použito jako řetězec znaků ukončený nulovým znakem ('\0'). Dereferencí bychom vypsali jen jeho první znak (případně nulový znak, měl-li by řetězec nulovou délku). cout<<text; vypíše řetězec celý.

Editováno 17.6.2019 13:14
Odpovědět
17.6.2019 13:13
Kolik jazyků umíš, tolikrát jsi programátor.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.