1

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

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

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

Розробіть програму «Компанія». Компанія складається з 3 відділів. Кожен відділ має свою назву, рейтинг. В кожному відділі працює певна кількість працівників(від 2 до 10). Працівник має унікальний ідентифікатор,  ім’я, прізвище, вік, посаду, стаж роботи, заробітну плату, дату нарождення(рік, місяць, день). Реалізуйте такі можливості:
Друк всіх працівників.
Друк всіх працівників певного відділу.
Пошук працівника по ідентифікатору.
Пошук працівника по імені.
Пошук працівника по прізвищу.
Пошук працівника по даті народження.
Пошук працівника з найбільшою заробітною платою.
Пошук відділу з найвищим рейтингом.
Пошук працівників по першій букві прізвища.
Пошук всіх працівників, яким залишилось менше 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 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;
        }
    } while (choice > 0);
    system("pause");
}
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 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);
    }
}

ось помилка
"int strcmp (const char *, const char *)": неможливо перетворити аргумент 1 з "char" в "const char *" ряд 114

2 Востаннє редагувалося koala (05.11.2018 15:33:40)

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

Вам треба розібратися з двома питаннями:
1. З якого числа починається нумерація масивів (зокрема, і стрічок) в C/C++?
2. Як представлені символи (char) в C/C++, і, відповідно, як їх треба порівнювати?

3

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

Parsifal написав:

"int strcmp (const char *, const char *)": неможливо перетворити аргумент 1 з "char" в "const char *" ряд 114

а що ви хотіли отримати порівнюючи окремий символ зі строкою ?