1

Тема: Допоможіть(С++(структури))

ось все завдання

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

Розробіть програму «Компанія». Компанія складається з 3 відділів. Кожен відділ має свою назву, рейтинг. В кожному відділі працює певна кількість працівників(від 2 до 10). Працівник має унікальний ідентифікатор,  ім’я, прізвище, вік, посаду, стаж роботи, заробітну плату, дату нарождення(рік, місяць, день). Реалізуйте такі можливості:
Друк всіх працівників.
Друк всіх працівників певного відділу.
Пошук працівника по ідентифікатору.
Пошук працівника по імені.
Пошук працівника по прізвищу.
Пошук працівника по даті народження.
Пошук працівника з найбільшою заробітною платою.
Пошук відділу з найвищим рейтингом.
Пошук працівників по першій букві прізвища.
Пошук всіх працівників, яким залишилось менше 15 років до пенсії, якщо пенсійний вік починається в 60 років.
Пошук всіх працівників, в яких є надбавка до зарплати(надбавка начислюється, якщо стаж роботи 5 і більше років).
Редагування даних працівника(пошук по прізвищу і перезаписування нових даних).
Сортування всіх працівників потрібного відділу по прізвищу.
Сортування всіх працівників потрібного відділу по стажу роботи.
Сортування всіх працівників потрібного відділу по заробітній платі.
Добавлення нового працівника в потрібний відділ.
Добавлення нового відділу.
Видалення працівника по ідентифікатору.
Видалення працівника по прізвищу.
Видалення всіх працівників.

ось зроблені неправильно завдання

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

Пошук працівників по першій букві прізвища.
Пошук всіх працівників, яким залишилось менше 15 років до пенсії, якщо пенсійний вік починається в 60 років.
Пошук всіх працівників, в яких є надбавка до зарплати(надбавка начислюється, якщо стаж роботи 5 і більше років).
Сортування всіх працівників потрібного відділу по прізвищу.
Сортування всіх працівників потрібного відділу по стажу роботи.
Сортування всіх працівників потрібного відділу по заробітній платі.
Добавлення нового працівника в потрібний відділ.
Видалення працівника по ідентифікатору.
Видалення працівника по прізвищу.

ось весь код

▼Прихований текст
#include <iostream>
using namespace std;
struct Date {
    char year[100];
    char month[100];
    char day[100];
};
struct Worker {
    char identificator[100];
    char name[100];
    char surname[100];
    char age[100];
    char posada[100];
    char staz[100];
    char zarplata[100];
    Date birthday;
};
struct Compania {
    char name[100];
    char reitung[100];
    Worker* prazivnuk;
    int count;
};
void set_Worker(Worker&worker);
void print_Worker(Worker worker);
void print_Date(Date date);
void set_Date(Date&date);
void set_Compania(Compania&compania);
void print_Compania(Compania compania);
void posch_praz_identificator(Worker worker, int identificato);
void posch_praz_name(Worker worker, char* name);
void posch_praz_name1(Compania* compania, char* name, int n);
void posch_praz_identificator1(Compania* compania, int identificato, int n);
void posch_praz_surname(Worker worker, char* surname);
void posch_praz_surname1(Compania* compania, char* surname, int n);
void posch_praz_birthday1(Compania* compania, int n, int year1, int month1, int day1);
void posch_praz_zarplata(Compania* compania, int n);
void posch_praz_birthday(Worker prazivnuk, int year1, int month1, int day1);
void posch_vidil_reitung(Compania* compania, int n);
//void posch_praz_surname_bukv(Worker worker, char* surnam);
//void posch_praz_surname1_bukv(Compania* compania, char* surnam, int n);
//void posch_praz_penc1(Compania* compania, int identificato, int n);
//void posch_praz_penc(Worker worker, int identificato);
//void posch_praz_staz1(Compania* compania, int identificato, int n);
//void posch_praz_staz(Worker worker, int identificato);
void red_praz_surname(Worker&worker, char* surname);
void red_praz_surname1(Compania* compania, char* surname, int n);
//void sort_vidil_surname(Compania*compania, int vidil, int n);
//void sort_vidil_staz(Compania*compania, int vidil, int n);
//void sort_vidil_zarplata(Compania*compania, int vidil, int n);
//void add_praz_vidil(Compania*compania, int vidil, int n);
void add_vidil(Compania*compania, int*n);
//void del_praz_identificator(Compania* compania, int identificato, int n);
//void del_praz_surname(Compania*compania, char *surna, int n);
void del(Compania*compania, int n);
void main() {
    int n = 2, cho, choice;
    Compania* compania = new Compania[n];
    for (int i = 0; i < n; i++) {
        set_Compania(compania[i]);
    }
    do {
        cout << "Enter choise: ";
        (cin >> choice).get();
        switch (choice) {
        case 1:
            for (int i = 0; i < n; i++) {
                print_Compania(compania[i]);
            }
            break;
        case 2:
            cout << "Enter vidil: ";
            (cin >> cho).get();
            print_Compania(compania[cho - 1]);
            break;
        case 3:
            int identificato;
            cout << "Enter identificator: ";
            (cin >> identificato).get();
            posch_praz_identificator1(compania, identificato, n);
            break;
        case 4:
            char name[100];
            cout << "Enter name: ";
            gets_s(name);
            posch_praz_name1(compania, name, n);
            break;
        case 5:
            char surname[100];
            cout << "Enter surname: ";
            gets_s(surname);
            posch_praz_surname1(compania, surname, n);
            break;
        case 6:
            int year1, month1, day1;
            cout << "year: ";
            cin >> year1;
            cout << "month: ";
            cin >> month1;
            cout << "day: ";
            cin >> day1;
            posch_praz_birthday1(compania, n, year1, month1, day1);
            break;
        case 7:
            posch_praz_zarplata(compania, n);
            break;
        case 8:
            posch_vidil_reitung(compania, n);
            break;
            /*case 9:
                char surnam[2];
                cout << "Enter 1 bukv surname: ";
                gets_s(surnam);
                posch_praz_surname1_bukv(compania, surnam, n);
                break;*/
                /*case 10:
                    posch_praz_penc1(compania, 45, n);
                    break;*/
        /*case 11:
            posch_praz_staz1(compania, 5, n);
            break; */
        case 12:
            char surnam[100];
            cout << "Enter surname: ";
            gets_s(surnam);
            red_praz_surname1(compania, surnam, n);
            break;
        /*case 13:
            int vidil;
            cout << "Enter vidil: ";
            (cin >> vidil).get();
            sort_vidil_surname(compania, vidil, n);
            break;*/
        /*case 14:
            int vidil;
            cout << "Enter vidil: ";
            (cin >> vidil).get();
            sort_vidil_staz(compania, vidil, n);
            break;*/
        /*case 15:
            int vidil;
            cout << "Enter vidil: ";
            (cin >> vidil).get();
            sort_vidil_zarplata(compania, vidil, n);
            break;*/
        /*case 16:
            int vidil;
            cout << "Enter vidil: ";
            (cin >> vidil).get();
            add_praz_vidil(compania, vidil, n);
            break;*/
        case 17:
            add_vidil(compania, &n);
            break;
        /*case 18:
            int identificat;
            cout << "Enter identificator: ";
            (cin >> identificat).get();
            del_praz_identificator(compania, identificat, n);
            break;*/
        /*case 19:
            char surna[100];
            cout << "Enter surname: ";
            gets_s(surna);
            del_praz_surname(compania, surna, n);
            break;*/
        case 20:
            del(compania, n);
            break;
        }
    } while (choice > 0);
    system("pause");
}
void del(Compania*compania, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            delete[] compania[i].prazivnuk;
        }
    }
}
//void del_praz_surname(Compania*compania, char *surna, int n) {
//    int poschuk, test = 0;
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < compania[i].count - 1; j++) {
//                int poschuk = strcmp(compania[i].prazivnuk[j].surname, surna);
//                if (poschuk == 0) {
//                    delete[] compania[i].prazivnuk[j].identificator;
//                    test = 1;
//                    compania[i].count--;
//                }
//                if (test == 1) {
//                    compania[i].prazivnuk[j] = compania[i].prazivnuk[j + 1];
//                }
//            }
//        }
//}
//void del_praz_identificator(Compania* compania, int identificato, int n) {
//    int poschuk, test = 0;
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < compania[i].count - 1; j++) {
//            poschuk = atoi(compania[i].prazivnuk[j].identificator);
//            if (poschuk == identificato) {
//                delete[] compania[i].prazivnuk[j].identificator;
//                test = 1;
//                compania[i].count--;
//            }
//            if (test == 1) {
//                compania[i].prazivnuk[j] = compania[i].prazivnuk[j + 1];
//            }
//        }
//    }
//}
void add_vidil(Compania*compania, int *n) {
    Compania* tmp = new Compania[*n + 1];
    tmp = compania;
    set_Compania(tmp[*n]);
    compania = tmp;
    n++;
}
//void add_praz_vidil(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    tmp[1] = compania[vidil];
//    set_Worker(tmp[1].prazivnuk[compania[vidil].count]);
//    compania[vidil] = tmp[1];
//    compania[vidil].count++;
//}
//void sort_vidil_zarplata(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].zarplata, compania[vidil].prazivnuk[j + 1].zarplata);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
//void sort_vidil_staz(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].staz, compania[vidil].prazivnuk[j + 1].staz);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
//void sort_vidil_surname(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].surname, compania[vidil].prazivnuk[j + 1].surname);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
void red_praz_surname1(Compania* compania, char* surname, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            red_praz_surname(compania[i].prazivnuk[j], surname);
        }
    }
}
void red_praz_surname(Worker&worker, char* surname) {
    int cho = strcmp(worker.surname, surname);
    if (cho == 0) {
        set_Worker(worker);
    }
}
//void posch_praz_staz1(Compania* compania, int sta, int n) {
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < compania[i].count; j++) {
//            posch_praz_identificator(compania[i].prazivnuk[j], sta);
//        }
//    }
//}
//void posch_praz_staz(Worker worker, int sta) {
//    int poschuk = atoi(worker.staz);
//    if (poschuk >= sta) {
//        print_Worker(worker);
//    }
//}
    //void posch_praz_penc1(Compania* compania, int a, int n) {
    //    for (int i = 0; i < n; i++) {
    //        for (int j = 0; j < compania[i].count; j++) {
    //            posch_praz_identificator(compania[i].prazivnuk[j], a);
    //        }
    //    }
    //}
    //void posch_praz_penc(Worker worker, int a) {
    //    int poschuk = atoi(worker.age);
    //    if (poschuk == a) {
    //        print_Worker(worker);
    //    }
    //}
    //void posch_praz_surname1_bukv(Compania* compania, char* surnam, int n) {
    //    for (int i = 0; i < n; i++) {
    //        for (int j = 0; j < compania[i].count; j++) {
    //            posch_praz_surname_bukv(compania[i].prazivnuk[j], surnam);
    //        }
    //    }
    //}
    //void posch_praz_surname_bukv(Worker worker, char *surnam) {
    //    int cho = strcmp(worker.surname[1], surnam);
    //    if (cho == 0) {
    //        print_Worker(worker);
    //    }
    //}
void posch_vidil_reitung(Compania* compania, int n) {
    int max = 0;
    for (int i = 0; i < n; i++) {
        int a = atoi(compania[i].reitung);
        if (a > max) {
            max = a;
        }
    }
    for (int i = 0; i < n; i++) {
        int a = atoi(compania[i].reitung);
        if (a == max) {
            print_Compania(compania[i]);
        }
    }
}
void posch_praz_zarplata(Compania* compania, int n) {
    int max = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            int a = atoi(compania[i].prazivnuk[j].zarplata);
            if (a > max) {
                max = a;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            int a = atoi(compania[i].prazivnuk[j].zarplata);
            if (a == max) {
                print_Worker(compania[i].prazivnuk[j]);
            }
        }
    }
}
void posch_praz_birthday(Worker prazivnuk, int year1, int month1, int day1) {
    int year2 = atoi(prazivnuk.birthday.year);
    int month2 = atoi(prazivnuk.birthday.month);
    int day2 = atoi(prazivnuk.birthday.day);
    if (year2 == year1 && month2 == month1 && day2 == day1) {
        print_Worker(prazivnuk);
    }
}
void posch_praz_birthday1(Compania* compania, int n, int year1, int month1, int day1) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            posch_praz_birthday(compania[i].prazivnuk[j], year1, month1, day1);
        }
    }
}
void posch_praz_surname1(Compania* compania, char* surname, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            posch_praz_surname(compania[i].prazivnuk[j], surname);
        }
    }
}
void posch_praz_surname(Worker worker, char* surname) {
    int cho = strcmp(worker.surname, surname);
    if (cho == 0) {
        print_Worker(worker);
    }
}
void posch_praz_identificator1(Compania* compania, int identificato, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            posch_praz_identificator(compania[i].prazivnuk[j], identificato);
        }
    }
}
void posch_praz_name1(Compania* compania, char* name, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < compania[i].count; j++) {
            posch_praz_name(compania[i].prazivnuk[j], name);
        }
    }
}
void posch_praz_name(Worker worker, char* name) {
    int cho = strcmp(worker.name, name);
    if (cho == 0) {
        print_Worker(worker);
    }
}
void posch_praz_identificator(Worker worker, int identificato) {
    int poschuk = atoi(worker.identificator);
    if (poschuk == identificato) {
        print_Worker(worker);
    }
}
void print_Compania(Compania compania) {
    cout << "Name vidil: ";
    puts(compania.name);
    cout << "Reitung: ";
    puts(compania.reitung);
    cout << "Count prazivnik: ";
    cout << compania.count << "\n";
    for (int i = 0; i < compania.count; i++) {
        print_Worker(compania.prazivnuk[i]);
    }
}
void set_Compania(Compania&compania) {
    cout << "Enter name vidil: ";
    gets_s(compania.name);
    cout << "Enter reitung: ";
    gets_s(compania.reitung);
    cout << "Enter count prazivnik: ";
    (cin >> compania.count).get();
    compania.prazivnuk = new Worker[compania.count];
    for (int i = 0; i < compania.count; i++) {
        set_Worker(compania.prazivnuk[i]);
    }
}
void print_Worker(Worker worker) {
    cout << "Identifikator: ";
    puts(worker.identificator);
    cout << "Name worker: ";
    puts(worker.name);
    cout << "Surname: ";
    puts(worker.surname);
    cout << "Age: ";
    puts(worker.age);
    cout << "Posada: ";
    puts(worker.posada);
    cout << "Staz: ";
    puts(worker.staz);
    cout << "Zarplata: ";
    puts(worker.zarplata);
    print_Date(worker.birthday);
}
void set_Worker(Worker&worker) {
    cout << "Enter indentifikator: ";
    gets_s(worker.identificator);
    cout << "Enter name worker: ";
    gets_s(worker.name);
    cout << "Enter surname: ";
    gets_s(worker.surname);
    cout << "Enter age: ";
    gets_s(worker.age);
    cout << "Enter posada: ";
    gets_s(worker.posada);
    cout << "Enter staz: ";
    gets_s(worker.staz);
    cout << "Enter zarplata: ";
    gets_s(worker.zarplata);
    set_Date(worker.birthday);
}
void print_Date(Date date) {
    cout << "Year: ";
    puts(date.year);
    cout << "Month: ";
    puts(date.month);
    cout << "Day: ";
    puts(date.day);
}
void set_Date(Date&date) {
    cout << "Enter year: ";
    gets_s(date.year);
    cout << "Enter month: ";
    gets_s(date.month);
    cout << "Enter day: ";
    gets_s(date.day);
}

ось код який працює не так як потрібно

▼Прихований текст
//void del_praz_surname(Compania*compania, char *surna, int n) {
//    int poschuk, test = 0;
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < compania[i].count - 1; j++) {
//                int poschuk = strcmp(compania[i].prazivnuk[j].surname, surna);
//                if (poschuk == 0) {
//                    delete[] compania[i].prazivnuk[j].identificator;
//                    test = 1;
//                    compania[i].count--;
//                }
//                if (test == 1) {
//                    compania[i].prazivnuk[j] = compania[i].prazivnuk[j + 1];
//                }
//            }
//        }
//}
//void del_praz_identificator(Compania* compania, int identificato, int n) {
//    int poschuk, test = 0;
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < compania[i].count - 1; j++) {
//            poschuk = atoi(compania[i].prazivnuk[j].identificator);
//            if (poschuk == identificato) {
//                delete[] compania[i].prazivnuk[j].identificator;
//                test = 1;
//                compania[i].count--;
//            }
//            if (test == 1) {
//                compania[i].prazivnuk[j] = compania[i].prazivnuk[j + 1];
//            }
//        }
//    }
//}
//void add_praz_vidil(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    tmp[1] = compania[vidil];
//    set_Worker(tmp[1].prazivnuk[compania[vidil].count]);
//    compania[vidil] = tmp[1];
//    compania[vidil].count++;
//}
//void sort_vidil_zarplata(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].zarplata, compania[vidil].prazivnuk[j + 1].zarplata);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
//void sort_vidil_staz(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].staz, compania[vidil].prazivnuk[j + 1].staz);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
//void sort_vidil_surname(Compania*compania, int vidil, int n) {
//    Compania* tmp = new Compania[1];
//    for (int j = 0; j < compania[vidil].count; j++) {
//        int cho = strcmp(compania[vidil].prazivnuk[j].surname, compania[vidil].prazivnuk[j + 1].surname);
//        if (cho > 0) {
//            tmp[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j];
//            compania[vidil].prazivnuk[j] = compania[vidil].prazivnuk[j + 1];
//            compania[vidil].prazivnuk[j + 1] = tmp[vidil].prazivnuk[j];
//        }
//    }
//}
//void posch_praz_staz1(Compania* compania, int sta, int n) {
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < compania[i].count; j++) {
//            posch_praz_identificator(compania[i].prazivnuk[j], sta);
//        }
//    }
//}
//void posch_praz_staz(Worker worker, int sta) {
//    int poschuk = atoi(worker.staz);
//    if (poschuk >= sta) {
//        print_Worker(worker);
//    }
//}
    //void posch_praz_penc1(Compania* compania, int a, int n) {
    //    for (int i = 0; i < n; i++) {
    //        for (int j = 0; j < compania[i].count; j++) {
    //            posch_praz_identificator(compania[i].prazivnuk[j], a);
    //        }
    //    }
    //}
    //void posch_praz_penc(Worker worker, int a) {
    //    int poschuk = atoi(worker.age);
    //    if (poschuk == a) {
    //        print_Worker(worker);
    //    }
    //}
    //void posch_praz_surname1_bukv(Compania* compania, char* surnam, int n) {
    //    for (int i = 0; i < n; i++) {
    //        for (int j = 0; j < compania[i].count; j++) {
    //            posch_praz_surname_bukv(compania[i].prazivnuk[j], surnam);
    //        }
    //    }
    //}
    //void posch_praz_surname_bukv(Worker worker, char *surnam) {
    //    int cho = strcmp(worker.surname[1], surnam);
    //    if (cho == 0) {
    //        print_Worker(worker);
    //    }
    //}

2

Re: Допоможіть(С++(структури))

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

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