1 Востаннє редагувалося shonrens (08.11.2015 01:26:40)

Тема: Змінення кольору виведеного тексту.

Всім привіт, я тут спробував один приклад набратиб зміна кольору повідомлення:

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

enum color{Red=1, Green, Blue};

int main()
{
        cout << "1.Red\n";
        cout << "2.Green\n";
        cout << "3.Blue\n";
        int a;

        do{
        cin >> a;
        }while(a == 0 || a > 3);

        color c = (color)a;

        switch(c)
        {
        case Red: system("color 4"); cout << "Hello"; break;
        case Green: system("color 2"); cout << "Hello"; break;
        case Blue: system("color 3"); cout << "Hello"; break;
        }

return 0;
}

Програма запускається але коли ввожу 1, 2 або 3 виводить повідомлення "sh: 1: color: not found", можливо десь допустив помилку але щось мені підказує що все через те що запуск роблю на лінуксі, можливо хтось знає спосіб поділіться інформацією  *SORRY* і якщо будете скидувати код то щось простішк     *PARDON*

2

Re: Змінення кольору виведеного тексту.

Читайте про Ncurses

Прихований текст

Боже, спаси Україну од таких програмістів

Подякували: Master_Sergius, BarsicPlus, leofun013

3 Востаннє редагувалося shonrens (08.11.2015 02:09:53)

Re: Змінення кольору виведеного тексту.

0xDADA11C7 написав:

Читайте про Ncurses

Прихований текст

Боже, спаси Україну од таких програмістів

дякую, за ссилку почитаю. А за прихований текст обідно.  :(
Ще знайшов посилання на більш детальну інформацію https://code-live.ru/post/cpp-ncurses-hello-world/

4

Re: Змінення кольору виведеного тексту.

Розумієте, уживати системні консольні команди для керування терміналом це ... щось протиприродне, а ви ще й сплутали системи, узявши приклад для вінди, попередньо не поцікавившись наявністю такої команди(чи аналогу) у вашій командній оболонці.

Подякували: koala, BarsicPlus, leofun013

5

Re: Змінення кольору виведеного тексту.

На пальцях розкриваю, що хотів сказати пан 0xDADA11C7: є така річ, як консоль. Це - універсальний засіб передачі текстової інформації, який базово підтримує тільки дві операції - ввід і вивід, зате працює будь-де: Windows, *NIX, Multics, екран з клавіатурою, принтер з клавіатурою, телетайп, мережа... не має значення. Ваша програма робить тільки потоковий ввід-вивід і працює будь-де. Звісно, жодних кольорів, жодних звуків, жодних запахів, жодних кнопок там немає - немає способу з клавіатури ввести ноту "до", так само як і відіслати в мережу зелену літеру чи натиснути мишкою на роздруковану на папері кнопку, щоб комп'ютер про це дізнався.
Але людям так нецікаво, тому почали придумувати різні прикраси. У цих прикрас є одна велика проблема: вони не універсальні. В Windows - свої, в Linux - свої. Звісно, існують кросплатформені бібліотеки, які дозволяють робити одне й те саме в різних системах, є порти ncurses під Windows, скажімо. Але це вже не "чиста" консоль, і це треба розуміти.
Стосовно system: це - аварійний засіб, який можна використовувати тільки в дуже обмежених випадках. Він запускає командну оболонку (cmd в Windows, sh в UNIX і т.д.), яка потім розбирає вашу команду і виконує її. Проблема тут в тому, що командна оболонка значно більша і складніша за вашу програму, і ви, умовно кажучи, купуєте магазин канцтоварів замість того, щоб купити там потрібну вам фарбу.
Якщо хочете змінювати колір в Windows - є SetConsoleTextAttribute з windows.h. color - команда для оболонки.
Якщо хочете змінювати колір в Linux - використовуйте Escape-послідовності.
Якщо хочете кросплатформенне рішення - беріть кросплатформенну бібліотеку, яка буде якоюсь функцією використовувати ці два способи (чи інші, яка вам різниця)  залежно від ОС.

Подякували: 0xDADA11C7, leofun012

6 Востаннє редагувалося shonrens (08.11.2015 12:54:02)

Re: Змінення кольору виведеного тексту.

0xDADA11C7 написав:

Розумієте, уживати системні консольні команди для керування терміналом це ... щось протиприродне, а ви ще й сплутали системи, узявши приклад для вінди, попередньо не поцікавившись наявністю такої команди(чи аналогу) у вашій командній оболонці.

Я просто відкрив відео урок і почав набирати код за автором. Там різні приклади були де автор описує що він робить і що код буде рбити, коли дійшов до прикладу який вам показав я здогадувався що не буде робити через system, але як говорять надія помирає остання після того як я переконався що не працює і став цікавитись. Але від вас отримав хорошу інформацію.... щоб люди не писали таких повідомлень

Прихований текст

Боже, спаси Україну од таких програмістів

потрібно спробувати собі і нікому не признаватись, після чого зкинути код і просто запитати як ось таке зробити на лінуксі.
Я ж тільки вчусь і все це роблю для себе.

7

Re: Змінення кольору виведеного тексту.

Ну тоді ще треба сказати...

Прихований текст

Боже, спаси Україну од програмістів, що навчаються за відеоуроками

Подякували: leofun011

8 Востаннє редагувалося shonrens (08.11.2015 13:16:03)

Re: Змінення кольору виведеного тексту.

koala написав:

Ну тоді ще треба сказати...

Прихований текст

Боже, спаси Україну од програмістів, що навчаються за відеоуроками

ну все обідка, тож не тільки за зідеоуроками. В гугл прописую що ми почали вчити, читаю статью по темі. Книжки відкриваю і шукаю в них те що мені потрібно. Хватить іздіватись :(
Відео уроки мені подобаються тим що автор відразу все розповвідає що зробив що воно зробить, нам викладач показує приклади через тімвівер і розповідає що в прикладі написаноі що воно зробить це так само і в відео уроках, зазвичай там прості приклади де можна так сказати ознайомитись з тим що мене чеаає.

9

Re: Змінення кольору виведеного тексту.

Я сам навчаюся за відеоуроками. При чому тут відеоуроки?

10

Re: Змінення кольору виведеного тексту.

Я просто відкрив відео урок і почав набирати код за автором. Там різні приклади були де автор описує що він робить і що код буде рбити, коли дійшов до прикладу який вам показав я здогадувався що не буде робити через system, але як говорять надія помирає остання після того як я переконався що не працює і став цікавитись.

Вчитель, якого ви обрали, виявився дурненьким, а все тому, що ви не хочете послідовно читати якісний підручник. Якщо не зміните стратегію навчання, така халепа буде часто відбуватися. До того ж, одним людям потрібні підручники, а іншим достатньо відеолекції послухати для досягнення того самого результату, бо вони мають смак, який їм допомагає у виборі джерел та хист до програмування, а хтось займається науковою роботою і не розуміє двійкової сутності комп'ютера. Тому просто подумайте про ваші здібності, подальшу кар'єру і оберіть стратегію навчання відповідно до них.

11

Re: Змінення кольору виведеного тексту.

Я так посидів почитав ваші повідомлення і зрозумів....
1. Не можна признаватись що пробував приклад не поцікавившись що там прописано .
2. Ніколи за жодних обставин не признаватись що дивишься відео уроки ну або дивився.

12 Востаннє редагувалося coder (08.11.2015 13:24:01)

Re: Змінення кольору виведеного тексту.

shonrens написав:

Я так посидів почитав ваші повідомлення і зрозумів....
1. Не можна признаватись що пробував приклад не поцікавившись що там прописано .
2. Ніколи за жодних обставин не признаватись що дивишься відео уроки ну або дивився.

Не беріть близько до серця. Відео уроки це сила.

Подякували: shonrens1

13

Re: Змінення кольору виведеного тексту.

coder написав:
shonrens написав:

Я так посидів почитав ваші повідомлення і зрозумів....
1. Не можна признаватись що пробував приклад не поцікавившись що там прописано .
2. Ніколи за жодних обставин не признаватись що дивишься відео уроки ну або дивився.

Не беріть близьцо до серця. Відео уроки це сила.

дякую, побільше таких добродіїв як ви.

Подякували: coder1

14 Востаннє редагувалося Master_Sergius (08.11.2015 13:39:41)

Re: Змінення кольору виведеного тексту.

До всього вищесказаного можна  додати:

"Немає сенсу намагатися розібратися із інтегральними рівняннями, немаючи поняття, що таке інтеграл, що таке похідна і що таке рівняння взагалі."

Яскравий приклад із життя (деякі факти можуть бути трішки зіпсованими, бо то було давно):
На 2-му курсі ПРИКЛАДНОЇ МАТЕМАТИКИ, студента викликали до дошки щось розв'язати із матаналізу. З горем пополам щось там робив і ось "самий сік" - він додає два дроби:

3/5 + 4/7 = 7/12

Ось отак він додав дроби... 2-ий курс, прикладної математики. Що він там робив узагалі?
Але і у вашому випадку ще не все втрачено. Аби було бажання. Потрібно чітко розуміти базу і кодити не методом тика.

Прихований текст

з паном індусом майже у всьому згідний, але якісні відеоуроки не завадять, але на одних відеоуроках далеко не заїхати

Подякували: 0xDADA11C7, leofun012

15

Re: Змінення кольору виведеного тексту.

"Немає сенсу намагатися розібратися із інтегральними рівняннями, немаючи поняття, що таке інтеграл, що таке похідна і що таке рівняння взагалі."
Я не вмію додавати дроби і фіг з того? Таблички множення також не знаю і в стовпчик не вмію множити. І що?

16 Востаннє редагувалося Betterthanyou (08.11.2015 14:15:53)

Re: Змінення кольору виведеного тексту.

(я почитав і зрозумів що в вас linux так що це не для вас)
shonrens написав:

Програма запускається але коли ввожу 1, 2 або 3 виводить повідомлення "sh: 1: color: not found"

В мене все працює
я якщо спробувати так

#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;

int main()
{
    puts("1.Red");
    puts("2.Green");
    puts("3.Blue");

    int a;
    
    do {
        cin >> a;
    } while (a == 0 || a > 3);

    switch (a)
    {
    case 1:a = 4; break;
    case 2:a = 2; break;
    case 3:a = 1; break;
    }
    
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);/*Отримання дескриптора пристрою стандартного виводу*/

    SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | a));/*Встановлення кольору*/
    puts("World!");


    getch();
    return 0;
}

17

Re: Змінення кольору виведеного тексту.

coder написав:

"Немає сенсу намагатися розібратися із інтегральними рівняннями, немаючи поняття, що таке інтеграл, що таке похідна і що таке рівняння взагалі."
Я не вмію додавати дроби і фіг з того? Таблички множення також не знаю і в стовпчик не вмію множити. І що?

"Мудрий більше зрозуміє з дурного питання, а ніж дурний із розумної відповіді." (здається, Брюс Лі)

1) то була в певному сенсі метафора
2) напевно, немає смислу питати де і ким Ви працюєте і скільки заробляєте
3) звісно, не все вимірюється в грошах, але заявляти про незнання таблички множення з таким пафосом - як мінімум дико...

Прихований текст

Таки дійсно, ЛММ храни Україну од таких програмістів.

п.с. давайте жити дружно, не будемо більше оффтопити :)

18

Re: Змінення кольору виведеного тексту.

Betterthanyou написав:
(я почитав і зрозумів що в вас linux так що це не для вас)
shonrens написав:

Програма запускається але коли ввожу 1, 2 або 3 виводить повідомлення "sh: 1: color: not found"

В мене все працює
я якщо спробувати так

#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;

int main()
{
    puts("1.Red");
    puts("2.Green");
    puts("3.Blue");

    int a;
    
    do {
        cin >> a;
    } while (a == 0 || a > 3);

    switch (a)
    {
    case 1:a = 4; break;
    case 2:a = 2; break;
    case 3:a = 1; break;
    }
    
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);/*Отримання дескриптора пристрою стандартного виводу*/

    SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | a));/*Встановлення кольору*/
    puts("World!");


    getch();
    return 0;
}

Так поставив лінукс не так давно, перед тим писав на visual sudio зараз звик і не хочеться тієї студії.

19 Востаннє редагувалося Itari (08.11.2015 15:00:26)

Re: Змінення кольору виведеного тексту.

Відео уроки це сила.

... яка відбиває мотивацію вмикати моск. Це така ж гидотна інстанція, як и кіно, яке підміняе книги своечасному суспільству, отож бо потреба думати самостійно відпадае.
Я вже не кажу, що у кліпаках нав'язується залежність від інструментів розробки, які використовує ведучій.
Якщо треба писати під Лінукс - то и цікавитись треба функціоналом саме цей ОС. Або ж кросплатформенними тулзами.

20

Re: Змінення кольору виведеного тексту.

Itari написав:

Відео уроки це сила.

... яка відбиває мотивацію вмикати моск. Це така ж гидотна інстанція, як и кіно, яке підміняе книги своечасному суспільству, отож бо потреба думати самостійно відпадае.
Я вже не кажу, що у кліпаках нав'язується залежність від інструментів розробки, які використовує ведучій.
Якщо треба писати під Лінукс - то и цікавитись треба функціоналом саме цей ОС. Або ж кросплатформенними тулзами.

Нажаль ми працюємо на ОС windows, так само і в книга які мені зустрічались в них так само працюють з ОС windows.