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