321

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

Готово!!! Працює!

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <ostream>
#include <string.h>
#include <windows.h>
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
#include<ctime>
#include <io.h>

using namespace std;
class DIR
{
    char sPath[MAX_PATH];
    char sPName[MAX_PATH];
public:

    char* GetsPath()
    {
        return sPath;
    }
    void add_file()
    {
        ofstream Dir;
        Dir.open("B:\\SHAG2020\\text3.txt", ofstream::app);
        Dir << "test_2020" << endl;
        if (!Dir.is_open())

        {
            cout << "ошыбка открытия файла" << endl;
        }
        Dir.close();
    }
    void Dir_create()
    {

        strcpy(sPath, "B:\\SHAG");
        if (_mkdir(sPath) == 0)
            printf("Creation \r\n%s\r\n SUCCESFULLY COMPLETED\r\n", sPath);
    }

    bool Show_Directory(const char *path)
    {
        _finddata32_t find;
        char pathfind[MAX_PATH];
        strcpy(pathfind, path);
        strcat(pathfind, "\\*.*");
        char info[MAX_PATH];
        int result = _findfirst32(path, &find);
        system("cls");
        int flag = result;
        if (flag == -1) {
            strcpy(info, "Такой Директории Нет");
            cout << info << endl;
            printf("%s\n", info);
            return false;
        }
        while (flag != -1) {
            if (strcmp(find.name, ".") && strcmp(find.name, "..")) {
                find.attrib & 0x10 ? strcpy(info, " Каталог ") :
                    strcpy(info, " Файл ");
                cout << info << endl;
                cout << find.name << endl;
                printf("%30s %10s\n", find.name, info);
            }
            flag = _findnext32(result, &find);
        }
        
        _findclose(result);
        return true;
    }
 
    void rename_file()
    {
        char oldName[50], newName[50];

        cout << "Enter old name:"; 
        cin >> oldName;
        cout << "Enter new name:";
        cin >> newName;

        if (rename(oldName, newName) != 0)
            cout << "Error!\n Couldn't rename file.Check old and new filename...\n\n";
        else
            cout << "Ok...\n\n";
    }
    
    void Del_file()
    {
        char Name[50];
        cout << "Enter name:"; 
        cin >> Name; 
        if (remove(Name) != 0) 
            cout << "Error!\n Couldn't remove file.Check filename...\n";
        else
            cout << "Ok...\n";
    }

    void del_dir()
    {
        strcpy(sPath, "B:\\SHAG2020");
        if (_rmdir(sPath) == 0)
            printf("%s\r\n SUCCESFULLY DELETED\r\n", sPath);
    }
};

void Menu_()
{
    cout << "\t    menu:DIRECTORY" << endl;
    cout << "1 - вывести содержимое каталога" << endl;
    cout << "2 - создать файл" << endl;
    cout << "3 - удалить файл" << endl;
    cout << "4 - переименовать файл" << endl;
    cout << "5 - создать каталог" << endl;
    cout << "6 - удалить каталог" << endl;
    cout << "7 - EXIT" << endl;
}

int main()
{
    setlocale(LC_ALL, "");
    string text;
    DIR d;
    int Menu = 0;
    do {
        system("cls");
        Menu_();
        cin >> Menu;
        switch (Menu)
        {
        case 1:
            d.Show_Directory("B:\\SHAG2020");
            cout << "" << endl;
            system("pause");
            break;
        case 2:
            cout << "создание файла " << endl;
            d.add_file();
            cout << "файл успешно создан" << endl;
            system("pause");
            break;
        case 3:
            d.Del_file();
            cout << "файл удален" << endl;
            system("pause");
            break;
        case 4:
            d.rename_file();
            cout << "файл переименован" << endl;
            system("pause");
            break;
        case 5:
            d.Dir_create();
            cout << "каталог создан" << endl;
            system("pause");
            break;
        case 6:
            d.del_dir();
            system("pause");
            break;
            
        }
    } while (Menu != 7);
        system("pause");
    return 0;
}

322

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

а як це зробити з рекурсією?

323

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

це метод перебору вмісту каталогу? мені казали, що перегляд вмісту десь на 50 рядків коду
але видалення каталогу ще складніше.

324

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

що не так в цьому рядку?

325

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

Зробив деякі методи. А хто може щось підказати по перегляду вмісту каталогу? Як це реалізувати? Якщо я правильно розумію, то цей метод найбільший (по коду) і найскладніший.

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <fstream>
#include<ostream>
#include<string.h>
#include<direct.h>
#include<stdio.h>

using namespace std;
class DIR
{
    char sPath[256];
    char sPName[256];
public:

    char* GetsPath()
    {
        return sPath;
    }
    void add_file()
    {
        fstream Dir;
        Dir.open("text1.txt");
        Dir << "test" << endl;
    }
    
   
    void Dir_create()
    {
       //

        strcpy(sPath, "B:\\SHAG2020");
        if (_mkdir(sPath) == 0)
            printf("Creation \r\n%s\r\n SUCCESFULLY COMPLETED\r\n", sPath);
    }
    void ShowDirectory(const char* path)
    {

    }
    void rename_file()
    {

    }
    void Del_file()
    {

    }
   
    void del_dir()
    {
        strcpy(sPath, "B:\\SHAG2020");
        if (rmdir(sPath) == 0)
            printf("%s\r\n SUCCESFULLY DELETED\r\n", sPath);
    }
   
};

void Menu()
{
    cout << "\t    menu:DIRECTORY" << endl;
    cout << "1 - вывести содержимое каталога" << endl;
    cout << "2 - создать файл" << endl;
    cout << "3 - переименовать файл" << endl;
    cout << "4 - создать каталог" << endl;
    cout << "5 - удалить каталог" << endl;
    cout << "6 - EXIT" << endl;
}

int main()
{
    string text;
    DIR d;
    int Menu = 0;
    system("cls");
    cin >> Menu;
    switch (Menu)
    {
    case 1:
        d.ShowDirectory("B:\\SHAG2020");
        cout << "" << endl;
        break;

    case 2:
        cout << "вывод содержимого каталога " << endl;


        break;

    case 3:

        break;
    case 4:
        d.Dir_create();
        break;
    case 5:
        d.del_dir();
        break;

    }
    while (Menu != 6)
        system("pause");
}

326

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

ОК
створити клас Dir. Передбачити методи:
1) виведення вмісту каталогу по заданому шляху
2) перейменування файлу
3) видалення ффайлу
4) сворення каталогу
5) видалення каталогу

327

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

літературу можете підказати?

328

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

То як мені методи реалізувати?

329

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

mkdir?

330

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

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

#include<iostream>
#include <fstream>
#include<ostream>
#include<string.h>
#include<direct.h>
#include<stdio.h>

using namespace std;
class DIR
{
    char Path[256];
public:
    
    DIR()
    {
        
    }
    
};
void File_save()
{
    fstream Dir;
    Dir.open("text1.txt");
}
void rename_file()
{

}
void Del_file()
{

}
void add_dir()
{

}
void del_dir()
{

}

void Menu()
{
    cout << "\t    menu:DIRECTORY" << endl;
    cout << "1 - вывести содержимое каталога" << endl;
    cout << "2 - создать файл" << endl;
    cout << "3 - переименовать файл" << endl;
    cout << "4 - создать каталог" << endl;
    cout << "5 - удалить каталог" << endl;
    cout << "6 - EXIT" << endl;
};

int main()
{
    string text;
    DIR d;
    int Menu = 0;
    system("cls");
    cin >> Menu;
    switch (Menu)
    {
    case 1:
        cout << "" << endl;
        break;

    case 2:
        cout << "вывод содержимого каталога " << endl;
        break;

    case 3:

        break;
    case 4:

        break;
    case 5:

        break;

    }
while (Menu!=6)
system("pause");
}

331

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

Ось код... але чомусь не виводить список груп (пункт 7 - case7)
І видає помилку, хоча раніше працювало нормально
Error    LNK1168    cannot open C:\Users\Sasha87\OneDrive\Документи\ДОКУМЕНТИ\ШАГ\C++_клас(наслідування)\x64\Debug\C++_клас(наслідування).exe for writing    C++_клас(наслідування)    C:\Users\Sasha87\OneDrive\Документи\ДОКУМЕНТИ\ШАГ\C++_клас(наслідування)\C++_клас(наслідування)\LINK    1   
   

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<list>
#include<windows.h>

using namespace std;
class worker
{
protected:
    string name;
    string lastname;
    string position;
    list<string> spisok_сhief;
    list<string> spisok_podchinenyy;
    list<string> spisok_obazannostey;
public:
    virtual void SetLastname(string) = 0;
    virtual void SetName(string) = 0;
    virtual void SetPosition(string) = 0;
    virtual void ShowMustDoList() = 0;
    virtual void SetMustDoList() = 0;
    virtual void SetPodchinenyyList() = 0;
    virtual void ShowLastName() = 0;
    virtual void ShowFirstName() = 0;
    virtual list<string>& GetListOfPodch() = 0;
public:
};

class manager :public worker
{
public:
    void SetLastname(string s) override
    {
        lastname = s;
    }
    void SetName(string s) override
    {
        name = s;
    }
    void SetPosition(string s) override
    {
        position = s;
    }
    void ShowMustDoList() override
    {
        if (this->spisok_obazannostey.size() == 0)
            cout << "Нема завдань, які треба виконати" << endl;
        else
        {
            int i = 1;
            for (std::list<string>::iterator it = spisok_obazannostey.begin(); it != spisok_obazannostey.end(); ++it)
                cout << "Завдання " << i << " - " << *it << endl;
            i++;
        }
    }
    virtual void SetMustDoList()
    {}
    void SetPodchinenyyList() override
    {
        if (this->spisok_podchinenyy.size() == 0)
            cout << "Підлеглих нема" << endl;

        //виводить список підлеглих на екран
        else
        {
            int i = 1;
            for (std::list<string>::iterator it = spisok_podchinenyy.begin(); it != spisok_podchinenyy.end(); ++it)
                cout << "Підлеглий " << i << " - " << *it << endl;
            i++;
        }
    }
    void ShowFirstName() override
    {
        cout << "ім'я - " << this->name << endl;
    }
    void ShowLastName() override
    {
        cout << "прізвище - " << this->lastname << endl;
    }
    list<string>& GetListOfPodch() override
    {
        return this->spisok_podchinenyy;
    }

};
class developer:public worker
{
public:
    void SetLastname(string s) override
    {
        lastname = s;
    }
    void SetName(string s) override
    {
        name = s;
    }
    void SetPosition(string s) override
    {
        position = s;
    }
    void ShowMustDoList() override
    {
        if (this->spisok_obazannostey.size() == 0)
            cout << "Не поступило завдань від менеджера" << endl;
        else
        {
            int i = 1;
            for (std::list<string>::iterator it = spisok_obazannostey.begin(); it != spisok_obazannostey.end(); ++it)
                cout << "виконує вказівки менеджера" << i << " - " << *it << endl;
            i++;
        }
    }
    virtual void SetMustDoList() 
    {}
    void SetPodchinenyyList() override {
        if (this->spisok_podchinenyy.size() == 0)
            cout << "Підлеглих нема" << endl;
        else
        {
            int i = 1;
            for (std::list<string>::iterator it = spisok_podchinenyy.begin(); it != spisok_podchinenyy.end(); ++it)
                cout << "Підлеглий " << i << " - " << *it << endl;
            i++;
        }
    }
    void ShowFirstName() override
    {
        cout << "ім'я - " << this->name << endl;
    }
    void ShowLastName() override
    {
        cout << "прізвище - " << this->lastname << endl;
    }
    list<string>& GetListOfPodch() override
    {
        return this->spisok_podchinenyy;
    }

};

class coder :public worker
{
public:
    void SetLastname(string s) override
    {
        lastname = s;
    }
    void SetName(string s) override
    {
        name = s;
    }
    void SetPosition(string s) override
    {
        position = s;
    }
    void ShowMustDoList()override
    {
        if (this->spisok_obazannostey.size() == 0)
            cout << "допомога девелоперу не потрібна" << endl;
        else
        {
            int i = 1;
            for (std::list<string>::iterator it = spisok_obazannostey.begin(); it != spisok_obazannostey.end(); ++it)
                cout << "програмує на C++ та заносить інформацію в БД" << i << " - " << *it << endl;
            i++;
        }
    }
    virtual void SetMustDoList()
    {}
    void SetPodchinenyyList() override 
    {
        
        
    }
    void ShowFirstName() override
    {
        cout << "ім'я - " << this->name << endl;
    }
    void ShowLastName() override
    {
        cout << "прізвище - " << this->lastname << endl;
    }
    list<string>& GetListOfPodch() override
    {
        list<string>* tmp = NULL;
        return *tmp;
    }

};
class group
{
public:
    list<manager> list_of_managers;
    list<developer> list_of_developers;
    list<coder> list_of_coders;
    
    //list<group>list_of_groups;
    group() { list_of_managers.clear();
    }
    
};
            
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int menu;
    int sub_menu;
    string txt;
    string txt_for_new_person;
    manager tmp_manager;
    developer tmp_developer;
    coder tmp_coder;
    list<manager>::iterator tmp_iter_man;
    list<developer>::iterator tmp_dev_man;
    list<coder>::iterator tmp_cod_man;
    list<group>::iterator tmp_group;
    group gr;
    do {
        system("CLS");
        cout << "1 - Додати менеджера" << endl;
        cout << "2 - Показати всіх менеджерів" << endl;
        cout << "3-Додати розробника" << endl;
        cout << "4 - Показати всіх розробників" << endl;
        cout << "5 - додати молодшого програміста" << endl;
        cout << "6 - показати всіх молодших програмістів" << endl;
        cout << "7 - переглянути список груп" << endl;
        cout << "8 - Вийти" << endl;
        cout << "Зробіть свій вибір" << endl;
        cin >> menu;
        switch (menu)
        {
        case 1:cout << "Давайте додамо менеджера" << endl;


            cout << "Введіть прізвище менеджера" << endl;
            cin >> txt;
            tmp_manager.SetLastname(txt);

            cout << "Введіть ім'я менеджера" << endl;
            cin >> txt;
            tmp_manager.SetName(txt);

            cout << "Введіть посаду" << endl;
            cin >> txt;
            tmp_manager.SetPosition(txt);
            gr.list_of_managers.push_back(tmp_manager);
            tmp_iter_man = gr.list_of_managers.end();
            tmp_iter_man--;
            cout << "Нового менеджера додано в список." << endl;
            do
            {
                system("CLS");
                cout << "В цього менеджера є підлеглі ? (1 - додати підлеглого, 0 - ні)" << endl;
                cin >> sub_menu;
                if (sub_menu == 0)
                {
                    cout << "Ok. На цьому список підлеглих закінчено" << endl;
                    break;
                }
                cout << "Введіть прізвище підлеглого для нового менеджера" << endl;
                cin >> txt;
                tmp_iter_man->GetListOfPodch().push_back(txt);

            } while (true);
            system("pause");
            break;
        case 2:cout << "Виводжу на екран список всіх менеджерів групи" << endl;
            if (gr.list_of_managers.size() == 0)
                cout << "Ой, а менеджерів у групі і нема" << endl;
            else
                for (std::list<manager>::iterator it_man = gr.list_of_managers.begin(); it_man != gr.list_of_managers.end(); ++it_man)
                {
                    it_man->ShowLastName();
                    it_man->ShowFirstName();
                    if (it_man->GetListOfPodch().size() == 0)
                        cout << "У цього менеджера немає підлеглих" << endl;
                    else
                    {
                        list<string> lst_podch = it_man->GetListOfPodch();
                        int i = 0;
                        for (std::list<string>::iterator it_podch = lst_podch.begin(); it_podch != lst_podch.end(); ++it_podch)
                        {
                            cout << "Підлеглий " << i << " - " << *it_podch << endl;
                            i++;
                        }
                    }
                }
            system("pause");
            break;

        case 3:cout << "виводжу на екран список розробників" << endl;
            if (gr.list_of_developers.size() == 0)
                cout << "в групі немає розробників" << endl;
            cout << "введіть прізвище розробника" << endl;
            cin >> txt;
            tmp_developer.SetLastname(txt);
            cout << "введіть ім'я розробника" << endl;
            cin >> txt;
            tmp_developer.SetLastname(txt);
            cout << "Введіть посаду" << endl;
            cin >> txt;
            tmp_developer.SetPosition(txt);
            gr.list_of_developers.push_back(tmp_developer);
            tmp_dev_man = gr.list_of_developers.end();
            tmp_dev_man--;
            cout << "Нового розробника додано в список." << endl;
            do
            {
                system("CLS");
                cout << "В цього розробника є підлеглі ? (1 - додати підлеглого, 0 - ні)" << endl;
                cin >> sub_menu;
                if (sub_menu == 0)
                {
                    cout << "Ok. На цьому список підлеглих закінчено" << endl;
                    break;
                }
                cout << "Введіть прізвище підлеглого для нового розробника" << endl;
                cin >> txt;
                tmp_dev_man->GetListOfPodch().push_back(txt);

            } while (true);
            system("pause");
            break;
        case 4:cout << "Виводжу на екран список всіх розробників групи" << endl;
            if (gr.list_of_developers.size() == 0)
                cout << "розробників у групі нема" << endl;
            else
                for (std::list<developer>::iterator dev_man = gr.list_of_developers.begin(); dev_man != gr.list_of_developers.end(); ++dev_man)
                {
                    dev_man->ShowLastName();
                    dev_man->ShowFirstName();
                    if (dev_man->GetListOfPodch().size() == 0)
                        cout << "У цього розробника немає підлеглих" << endl;
                    else
                    {
                        list<string> lst_podch = dev_man->GetListOfPodch();
                        int i = 0;
                        for (std::list<string>::iterator it_podch = lst_podch.begin(); it_podch != lst_podch.end(); ++it_podch)
                        {
                            cout << "Підлеглий " << i << " - " << *it_podch << endl;
                            i++;
                        }
                    }
                }
            system("pause");
            break;
        case 5: cout << "виводжу на екран список програмістів" << endl;
            if (gr.list_of_coders.size() == 0)
                cout << "в групі немає програмістів" << endl;
            cout << "введіть прізвище програміста" << endl;
            cin >> txt;
            tmp_coder.SetLastname(txt);
            cout << "введіть ім'я програміста" << endl;
            cin >> txt;
            tmp_coder.SetLastname(txt);
            cout << "Введіть посаду" << endl;
            cin >> txt;
            tmp_coder.SetPosition(txt);
            gr.list_of_coders.push_back(tmp_coder);
            tmp_cod_man = gr.list_of_coders.end();
            tmp_cod_man--;
            cout << "Нового програміста додано в список." << endl;

            break;
        case 6:cout << "Виводжу на екран список всіх програмістів групи" << endl;
            if (gr.list_of_coders.size() == 0)
                cout << "програмістів у групі нема" << endl;
            else
                for (std::list<coder>::iterator cod_man = gr.list_of_coders.begin(); cod_man != gr.list_of_coders.end(); ++cod_man)
                {
                    cod_man->ShowLastName();
                    cod_man->ShowFirstName();
                }
            system("pause");
            break;

            cout << "Всього найкращого" << endl;
            system("pause");
            exit(0);
        case 7:cout << "показати список груп" << endl;
            if (gr.list_of_managers.size() == 0)

                for (std::list<manager>::iterator groups = gr.list_of_managers.begin(); groups != gr.list_of_managers.end(); groups++)
                {
                    tmp_iter_man->ShowLastName();
                    tmp_iter_man->ShowFirstName();
                    gr.list_of_managers.push_back(*tmp_iter_man);
                }
            if (gr.list_of_developers.size() == 0)
                for (std::list<developer>::iterator groups = gr.list_of_developers.begin(); groups != gr.list_of_developers.end(); groups++)
                {
                    tmp_dev_man->ShowLastName();
                    tmp_dev_man->ShowFirstName();
                    gr.list_of_developers.push_back(*tmp_dev_man);
                }

            if (gr.list_of_coders.size() == 0)
                for (std::list<coder>::iterator groups = gr.list_of_coders.begin(); groups != gr.list_of_coders.end(); groups++)
                {
                    tmp_cod_man->ShowLastName();
                    tmp_cod_man->ShowFirstName();
                    gr.list_of_coders.push_back(*tmp_cod_man);
                }
            
        }
    } while (menu != 8);

    system("pause");
}

332

(5 відповідей, залишених у Бази даних)

Ще які варіанти ?

333

(5 відповідей, залишених у Бази даних)

Як зробити експорт БД з ms sql management studio в Oracle? Щоб не довелось створювати БД з тими самими даними з нуля в Oracle

334

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

Хочу зрозуміти, як щось описати в класі і потім це реалізувати в головній функції

335

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

Створити абстрактний клас Worker з полями, які задають прізвище працівника, прізвища керівника і підлеглих і
віртуальними методами виведення списку обов'язків та списку підлеглих на екран.
На його основі реалізувати класи Manager (керівник проекту), Developer (розробник) і Coder (молодший програміст).
Створити клас Group (група), що містить масив / параметризрвані колекцію об'єктів цих класів в динамічній пам'яті.
Передбачити можливість виведення всіх об'єктів списку і вибірки на прізвище з висновком всього дерева підлеглих.
Написати демонстраційну програму, в якій будуть використовуватися всі методи класів.
Допоможіть будь-ласка доробити

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string.h>

using namespace std;

class worker
{
    public:
    char name[100];
    virtual void setlastname(char *s) = 0;
};

class managerublic worker
{
    public:
    void setlastname(char *s)
    {
        strcpy (name, s);
    }
};
class developerublic worker
{

};
class coder
{

};
class group1
{
    manager *manager1;
};


int main()
{
    manager A1;
    A1.setlastname((char *)"Ivanov");
}