IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Pokročilá práca s konzolou v C ++

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Honza
Nevyplnené
Avatar
Honza:20.10.2013 11:56

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

 
Odpovedať
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

Editované 12.1.2015 5:44
 
Odpovedať
12.1.2015 5:41
Avatar
Odpovedá 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?

Editované 11.3.2015 14:15
Odpovedať
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.

 
Odpovedať
14.7.2016 12:10
Avatar
Zbyňa
Člen
Avatar
Zbyňa:9.4.2017 1:51

např const nebo template na fce

 
Odpovedať
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;
 
Odpovedať
16.6.2019 17:38
Avatar
Odpovedá 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ý.

Editované 17.6.2019 13:14
Odpovedať
17.6.2019 13:13
Kolik jazyků umíš, tolikrát jsi programátor.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!