1

(23 відповідей, залишених у C++)

Itari написав:

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

І що з того? Віртуальні машини вже війшли з моди?

для чого мені ставити на віртуальну машину, якщо мені і так все влаштовує тільки треба розібратись як це можна зробити на linux і вуаля готово. Можливо ви хочете сказати що програмувати на linux через vim це дурня тоді це вже зовсім інша розмова.

2

(23 відповідей, залишених у C++)

В мене все вийшло, всім дякую  ;)

#include <iostream>
#include <ncursesw/curses.h>
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)
        {
        initscr();
        case Red:
        cout << "\033[31mHello.\033[0m\n";
        break;
        case Green:
        cout << "\033[32mHello.\033[0m\n";
        break;
        case Blue:
        cout << "\033[34mHello.\033[0m\n";
        break;
        endwin();
        }

return 0;
}

3

(23 відповідей, залишених у C++)

Itari написав:

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

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

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

4

(23 відповідей, залишених у C++)

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 зараз звик і не хочеться тієї студії.

5

(23 відповідей, залишених у C++)

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

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

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

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

6

(23 відповідей, залишених у C++)

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

7

(23 відповідей, залишених у C++)

koala написав:

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

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

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

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

8

(23 відповідей, залишених у C++)

0xDADA11C7 написав:

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

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

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

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

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

9

(23 відповідей, залишених у C++)

0xDADA11C7 написав:

Читайте про Ncurses

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

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

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

10

(23 відповідей, залишених у C++)

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

#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*

11

(20 відповідей, залишених у C++)

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

отак

#include <iostream>
#include <conio.h>
#include <string>

int main()
{
    std::string str = "127";
    int StrToInt = atoi(str.c_str());
    std::cout << StrToInt;

    getch();
    return 0;
}

мб те що треба) а для чого str.c_str()?

str.c_str() - перетворює string в char, а atoi перетворює char в int

зрозумів!!! Дуже дякую а то я вже був все почав прописувати і перетворювати))) я через vim пишу потрібно було ще підключити бібліотеку #include <cstdlib>

12

(20 відповідей, залишених у C++)

Betterthanyou написав:

отак

#include <iostream>
#include <conio.h>
#include <string>

int main()
{
    std::string str = "127";
    int StrToInt = atoi(str.c_str());
    std::cout << StrToInt;

    getch();
    return 0;
}

мб те що треба) а для чого str.c_str()?

13

(20 відповідей, залишених у C++)

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

Не знаю чи так правильно буде алей можна зробити структуру

struct IP
{
int field1,
field2,
field3,
field4;
};
...
IP ip1;
ip1.field1 = 127;
ip1.field2 = 0;
ip1.field3 = 0;
ip1.field4 = 0;

Або я не розумію або я не правильно задав питання.
Наприклад в мене є string str = "127"; Потрібно ip1.field = str;

наприклад так

#include <iostream>
#include <conio.h>
#include <string>

struct IP
{
private:
    int field1,
        field2,
        field3,
        field4;
public:
    IP(std::string str);
    void PrintIP();
    bool operator== (IP ip);
    void IpToInt(int *ip_field1, int *ip_field2, int *ip_field3, int *ip_field4);
};

IP::IP(std::string str = "0.0.0.0")
{
    std::string strcpy;

    int size = str.length();


    for (int i = 0, j = 0; i < size; i++)
    {
        if (str[i] != '.')
        {
            strcpy += str[i];
        }
        if (str[i] == '.' || i + 1 == size)
        {
            if (j == 0)
                field1 = atoi(strcpy.c_str());
            else if (j == 1)
                field2 = atoi(strcpy.c_str());
            else if (j == 2)
                field3 = atoi(strcpy.c_str());
            else if (j == 3)
                field4 = atoi(strcpy.c_str());
            j++;
            strcpy = "";
        }
    }

    if (field1 > 255 || field2 > 255 || field3 > 255 || field4 > 255)
    {
        field1 = 0, field2 = 0, field3 = 0, field4 = 0;
        std::cout << "Error! maximum ip 255.255.255.255" << std::endl;
    }

}

bool IP::operator== (IP ip)
{
    if (field1 == ip.field1 && field2 == ip.field2 && field3 == ip.field3 && field4 == ip.field4)
        return true;
    else
        return false;
}

void IP::PrintIP()
{
    std::cout << field1 << " " << field2 << " " << field3 << " " << field4 << std::endl;
}

void IP::IpToInt(int *ip_field1, int *ip_field2, int *ip_field3, int *ip_field4)
{
    *ip_field1 = field1;
    *ip_field2 = field2;
    *ip_field3 = field3;
    *ip_field4 = field4;
}

int main()
{

std::string str = "255.255.255.255";

std::cout << "--Initialization ip--" << std::endl << std::endl;

IP ip1 = str;
IP ip2 = (std::string)"127.0.0.0";
IP ip3 = (std::string)"192.168.0.01";
IP ip4 = (std::string)"255.00.255.255";
IP ip5 = (std::string)"255.255.255.256";

std::cout << "--Print ip--" << std::endl << std::endl;

ip1.PrintIP();
ip2.PrintIP();
ip3.PrintIP();
ip4.PrintIP();
ip5.PrintIP();

std::cout << "--Comparison ip--" << std::endl << std::endl;

std::cout << ((ip2 == ip5) ? "true" : "false") << std::endl;

int var1, var2, var3, var4;

std::cout << "--IpToInt ip--" << std::endl << std::endl;

ip2.IpToInt(&var1, &var2, &var3, &var4);


std::cout << var1 << " " << var2 << " " << var3 << " " << var4;



getch();
return 0;


}

--Initialization ip--
тут йде присвоєння IP структурі якщо воно більше за 255.255.255.255 виходить відповіде повідомлення про помилку
--Print ip--
тут виведення IP (там можна замінити " " на "." якщо потрібно через крапку)
--Comparison ip--
приклад порівняння Ip (Лише == , доробите по аналогії)
--IpToInt ip--
переведення ip в int (також можна так IP("255.60.255.255").IpToInt(&var1, &var2, &var3, &var4); тобто без створення об'єкта)

звичайно її потрібно дороблювати, ну я думаю ви зрозуміли мою ідею

ми ще класи не вчили))) я тут пробував і помітив що елемент стрінг наприклад:
str[0]; можна перевести в чар а з чара в інт і таким чином я маю число і можу з ним робити перевірку...
Да мені тільки потрібно зрозуміти як я можу витягнути число )

14

(20 відповідей, залишених у C++)

Master_Sergius написав:
shonrens написав:
Itari написав:

Яб так робив:

bool IPCheck(char *s){
    int a[4];
    return sscanf(s,"%d.%d.%d.%d",&a[0],&a[1],&a[2],&a[3])==4 
        && (a[0]>=0 && a[0]<256)
        && (a[1]>=0 && a[1]<256)
        && (a[2]>=0 && a[2]<256)
        && (a[3]>=0 && a[3]<256)
    ;
}

я тут подумав був і зрозумів що переводити не обовязково)


А якщо буде введено десь не число, а якісь інші символи - це теж працюватиме? чи вилетить з помилкою?

хм, тобто якщо я візьму if (str <= 255 && str >= 0) нічого не вийде?

15

(20 відповідей, залишених у C++)

Itari написав:

Яб так робив:

bool IPCheck(char *s){
    int a[4];
    return sscanf(s,"%d.%d.%d.%d",&a[0],&a[1],&a[2],&a[3])==4 
        && (a[0]>=0 && a[0]<256)
        && (a[1]>=0 && a[1]<256)
        && (a[2]>=0 && a[2]<256)
        && (a[3]>=0 && a[3]<256)
    ;
}

я тут подумав був і зрозумів що переводити не обовязково)

16

(20 відповідей, залишених у C++)

Master_Sergius написав:

Без регулярних виразів теж не складно. Коротко один із примітивних алгоритмів:
1) перебираємо циклом усі символи в рядку, копіюємо у підрядок до зустрічі з крапкою або з кінцем рядка
2) коли зустріли крапку - те, що скопійовано в підрядку - має бути одне із 4-ох чисел - пробуємо його перевести в число і подивитися чи належить проміжку [0;255]
3) як тільки щось не так, можна відразу сміло переривати цикли, виходити з функції і казати, що то не валідний айпі, а якщо цикл пройшов успішно до кінця, то айпі - валідний

п.с. в неті є готові регулярні вирази для перевірки айпішок, але Вам ще не можна ними користуватися

Дуже дякую, буду пробувати.

17

(20 відповідей, залишених у C++)

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

Наприклад я ввів адресу 127.0.0.0, як я можу 127 зробити типом int?

Не знаю чи так правильно буде алей можна зробити структуру

struct IP
{
int field1,
field2,
field3,
field4;
};
...
IP ip1;
ip1.field1 = 127;
ip1.field2 = 0;
ip1.field3 = 0;
ip1.field4 = 0;

Або я не розумію або я не правильно задав питання.
Наприклад в мене є string str = "127"; Потрібно ip1.field = str;

18

(20 відповідей, залишених у C++)

FakiNyan написав:

вам про регулярки вже розповідали?

здається поки ні

19

(20 відповідей, залишених у C++)

Доброї ночі маю ось таку задачу
"(1) Для виходу у Інтернет кожен комп’ютер отримує IP-адресу. Вона містить чотири цілих числа у діапазоні від 0 до 255, розділених крапками. Наприклад,
127.0.0.0
192.168.0.01
255.00.255.255
Написати програму, яка перевіряє чи введений рядок  є правильною IP-адресою.
"
Наприклад я ввів адресу 127.0.0.0, як я можу 127 зробити типом int? Чи можливо ви зможете підказати як правильніше робити перевірку.
Ip адресу записую в зміну типу

string

20

(20 відповідей, залишених у C++)

koala написав:

А у вашій математиці, якщо 0 три рази збільшити на 1, має виходити щось інше, крім 3? Розкажіть детальніше.

перший раз символ ! counter++  (0),
Потім знайшов "."  counter++ (1)
Потім знаходжу ? і counter++ (2)
трохи не так написав я мав на увазі так
counter = 0 перший раз символ !
Потім знайшов "."  counter++ (1)
Потім знаходжу ? і counter++ (2)

я так бачу як мій лічильник рахує.