Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2022, 13:33   #1
art.zkhrv
Новичок
Джуниор
 
Регистрация: 05.04.2022
Сообщений: 2
По умолчанию Сортировка по алфавиту С++

Здравствуйте! Помогите, пожалуйста. Задание:
1. Создать структуру Worker, которая содержит: ФИО, должность, год поступления на работу
2. Отсортировать список фамилий по алфавитному порядку и вывести на экран
3. Отсортировать людей по стажу, который вводится с клавиатуры
Нужна помощь - программа не сортирует по фамилиям
#include <iostream>
#include <cstring>
#include <conio.h>
#include <Windows.h>
#include <cstdlib>
#include <string.h>

using namespace std;

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
// Локализация Русского, без него некорректно отображаются фамилии

int net, Num, i, r, j;
struct Worker
{
char WK[40]; // Фамилия и инициалы сотрудника
char HR[40]; // Должность
int mark; // Год поступления на работу
};

cout << "Введите количество сотрудников: " << endl;
cin >> Num; //количество сотрудников

Worker* box = new Worker[Num]; //выделение в памяти места под массив
Worker tmp;

for (int i = 0; i < Num; i++) //Заполнение данных
{
cout << "Введите Фамилию и Инициалы сотрудника в формате Фамилия.И.О: " << endl;
cin >> box[i].WK;
cout << "Введите cпециальность: " << endl;
cin >> box[i].HR;
cout << "Введите год поступления на работу: " << endl;
cin >> box[i].mark;
}


for (i = 0; i < Num -1 ; i++); //должна быть сортировка по алфавиту //хз,не пашет
{
for (int j = 0 ; j < Num; j++)
{
if (strcmp(box[i].WK, box[j].WK) > 0)
{
strcpy_s(tmp.WK, box[i].WK);
strcpy_s(box[i].WK, box[j].WK);
strcpy_s(box[j].WK, tmp.WK);
}

}
}

//вывод на экран студентов - работает
cout<<endl;
cout << "Сортировка по алфавиту: " << endl;
for (int i = 0; i < Num; i++)
{
cout << "Фамилия и инициалы: " << box[i].WK << endl;
//cout << "Специальность: " << box[i].HR << endl;
//cout << "Год поступления на работу: " << box[i].mark << endl;
}
cout << endl;

// работает то, что ниже

cout << "Введите стаж для сортировки: " << endl;
cin >> r;
cout << "Сотрудники, чей стаж больше введённого: " << endl;
net = 0;

for (i = 0; i < Num; i++)
{
if ((2022 - box[i].mark) >= r)
{
cout << "Фамилия и инициалы: " << box[i].WK << endl;
cout << "Специальность: " << box[i].HR << endl;
}
else net++;
}
if (net == Num) cout << "Таких сотрудников нет!" << endl;
return 0;
}
art.zkhrv вне форума Ответить с цитированием
Старый 05.04.2022, 13:48   #2
art.zkhrv
Новичок
Джуниор
 
Регистрация: 05.04.2022
Сообщений: 2
По умолчанию

Всем спасибо! Разобрался с сортировкой:
for (i = 0; i < Num; i++) //сортировка по алфавиту
{
for (int j = i; j < Num; j++)
{
if (box[j].WK , box[j + 1].WK > 0)
{
tmp = box[j];
box[j] = box[j + 1];
box[j + 1] = tmp;
}
}
}
art.zkhrv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по алфавиту РОман321 Общие вопросы C/C++ 1 24.08.2019 18:18
Сортировка по алфавиту Krolik_Baksi Паскаль, Turbo Pascal, PascalABC.NET 1 10.12.2014 01:22
сортировка по алфавиту на си++ Craz Помощь студентам 2 01.10.2009 23:33
Сортировка по алфавиту ЧИЖ Общие вопросы Delphi 1 16.03.2007 14:17