Тема: Структури

Описати структуру з ім'ям «WORKER», що містить наступні поля:
«П. І. П» робітника; «Назва посади»; «Рік вступу на роботу».
Написати програму для реалізації таких дій :
А). Ввід даних в масив структур типу «WORKER» та сортування записів
в алфавітному порядку (поле «П. І. П»);
Б). Вивід „П. І. П» тих робітників, чий стаж роботи перевищує введене
користувачем значення;
Якщо таких робітників немає— вивести відповідне повідомлення.

#include <iostream>
#include <clocale>
#include <algorithm> 
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

using namespace std;

struct Worker
{
    char pib[40];
    char posada[40];
    int year;
};

void InsertionSort(Worker *array, int n)
{

    Worker  tmp;

    for (int i = 1,j; i < n; i++)
    {
       
        tmp = array[i];
        for ( j=i-1; j>=0 && strcmp(array[j].pib, tmp.pib) > 0;j--)
        
            array[j + 1] = array[j];
            array[j + 1] = tmp;
        
    }
    
}




int   main()
{
    int stazh, st, fl;
    
    // Оголошення масиву на 10 структур
    
    Worker* array;
    int n;
    cout << "Number of employees";
    // Введення n (число працівників)
    cin >> n;
    array = new Worker[n];
    for (int i = 0; i < n; i++)
    {
        cout << "Last name of employee\t";
        cin >> array[i].pib;
        cout << "Title of the post\t";
        cin >> array[i].posada;
        cout << "Year of entry to work\t";
        cin >> array[i].year;
        cout << endl;
    }
    for (int i = 0; i < n; i++)
    {
        cout << "Last name\t" << array[i].pib;
        cout << "Post \t" <<array[i].posada;
        cout << " Year \t" << array[i].year;

    }
    InsertionSort(array,  n);
    for (int i = 0; i < n; i++)
    {
        cout << array[i].pib;
    }
    cout << endl;

    cout << "enter the entire length of time: ";
    cin >> st;

    for (int i = 0; i < n; i++)
    {
        stazh = (2020 - array[i].year);

        if (stazh > st)
        {
            fl = 1;
            cout << array[i].pib;
            cout << "\n";
        }
    }
    if ( fl == 0)
        cout << "there aren'tsuitable workers ";
    
}

2

Re: Структури

Дякую, що поділилися кодом з наступними поколіннями програмістів.
Модератори, можна цей допис в C++ перенести? Дякую.

3

Re: Структури

#pragma warning(disable:4996)

Вже після цього можна вдатися до ментального насилля. Але не буду. Бо нащо?

4 Востаннє редагувалося koala (21.04.2020 09:53:19)

Re: Структури

Я так бачу, вчорашній натяк лишився незрозумілим. Розжовую: чого ви від нас очікуєте? Щоб ми облаяли код? Пан ur_naz, як бачите, це вміє, та й мені багато де плакати хочеться. Цей код робить щось не так, як ви очікуєте, і ви не можете знайти, де саме? Тоді сформулюйте питання конкретніше. Бажано за схемою "я написала код, що має робити завдання, але коли я роблю (що саме?), він видає (що саме?) замість (що саме?), як це виправити?". Код і завдання є - опишіть решту "що саме". Даю 80%, що ви зрозумієте, як розв'язувати проблему, поки допишете питання.

5

Re: Структури

Моя програма повинна сортувати  робітників у алфавітному порядку, але функція яка сортує не працює. Не розумію де у мене помилка.

6

Re: Структури

bohdana.plyska написав:

Моя програма повинна сортувати  робітників у алфавітному порядку, але функція яка сортує не працює. Не розумію де у мене помилка.

може проблема в цьому шматкові коду?

array[j + 1] = array[j];
array[j + 1] = tmp;

7

Re: Структури

"Функція, яка повинна сортувати" - це InsertionSort?
"Не працює" - розшифруйте, будь ласка. З моєї практики "не працює" може означати що завгодно, починаючи з "не увімкнула комп'ютер".

8

Re: Структури

https://replace.org.ua/uploads/images/9837/77f2094f8d1f93337a84313d8611e87a.png

Ось результати воно виводить прізвища у такому порядку , як введено .Думаю що функція сортування не працює.

9 Востаннє редагувалося cheappi386 (21.04.2020 13:07:32)

Re: Структури

ur_naz написав:
#pragma warning(disable:4996)

Вже після цього можна вдатися до ментального насилля. Але не буду. Бо нащо?

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

10 Востаннє редагувалося koala (21.04.2020 14:10:51)

Re: Структури

Могли б ще сильніше вікно розтягнути :)
Перевірив - функція працює: https://ideone.com/8J7YkN
І наскільки я можу розібрати (до речі, з вас очні краплі за це) - у вас там таки відсортований масив. Як саме ви перевіряєте, що він відсортований? Що саме виводить програма, що ви вирішили так?

З cmd.exe можна копіювати текст через Ctrl+M - Enter (а можна просто мишкою вибрати і знову ж таки Enter).

Подякували: leofun01, 221VOLT2