Код:
/*Написать программу, которая выполняет следующие действия:
• вводит с клавиатуры данные в массив, состоящий из десяти структур; записи должны быть размещены по алфавиту;
• выводит на дисплей фамилии работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
• если таких работников нет, вывести на дисплей соответствующее сообщение.*/
#include <iostream>
#include<Windows.h>
void CheckToErorrs(int T,int a,int b)
{
while(T > a || T < b)
{
std::cout << "Извините, нет такой команды" << std::endl;
std::cout << "\tПовторите Ввод! (1, 2, 3)" << std::endl;
std::cin >> T;
}
}
struct WORKER
{
char surname[40]; // фамилия
char name[40]; //имя
char post[40]; // название занимаемой должности
int date; //дата поступления на работу
};
int main()
{
while(true)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int t;
int const N = 3;
int staj;
bool f = true; // это логическая переменная, f равно значение истинно
WORKER mass[N]; // массив структур
std::cout << "\n\t==========МЕНЮ========" << std::endl;
std::cout << "\t1.Ввод данных" << std::endl;
std::cout << "\t2.Просмотр данных " << std::endl;
std::cout << "\t3.Выход" << std::endl;
std::cout << "\n\n";
std::cout << "Выберите один из пунктов: ";
std::cin >> t;
system("cls"); // очистка экрана
CheckToErorrs(t,3,1);
if (t == 1) // если выбран первый пункт...
{
for( int i = 0; i < N; i++ ) // ... то заполняем массив структур (вводим данные)
{
std::cout << std::endl;
std::cout << "Введите информацию о сотруднике №" << i+1 << "\n\n";
std::cout << " Фамилия: ";
std::cin >> mass[i].surname;
std::cout << " Имя: ";
std::cin >> mass[i].name;
std::cout << " Должность: ";
std::cin >> mass[i].post;
std::cout << " Год поступление на работу: ";
std::cin >> mass[i].date;
std::cout<<"\n";
}
std::cout << "Введите стаж работы в организации (текущий год 2013): ";
std::cin >> staj;
for (int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
if(mass[i].surname[0] < mass[j].surname[0])
{
swap(mass[i], mass[j]);
}
else if(mass[i].surname[0] == mass[j].surname[0])
{
if(mass[i].surname[1] < mass[j].surname[1])
{
swap(mass[i], mass[j]);
}
}
}
}
system("cls");
}
else if (t == 2) // если выбран второй пункт то читаем данные (см. ниже)
{
std::cout << "\nФамилии работников, чей стаж работы в организации превышает " << staj << " лет:\n\n";
for( int i = 0; i < N; i++ ) // цикл для поиска работников
{
if( (2013 - mass[i].date) > staj ) //если стаж работы превышает значение заданного пользователем...
{
std::cout << mass[i].surname << std::endl; //то выводим на экран фамилии работников чей стаж работы превышает значение
f = false; // переменной f присваиваем значение ложь
}
}
std::cout << "\n\n";
if (false) // если истинно то выводит соответствующее сбщ и ожидание нажатия клавиши
std::cout << "\nНЕТ ТАКИХ РАБОТНИКОВ!\n\n";
system("pause");
system("cls");
}
else if (t == 3) exit(0); // иначе если выбран третий пункт то закрываем консоль
}
system("pause");
return 0;
}
нужно чтобы фамилии работников(чей стаж работы превышает) выводились в алфавитном порядке. как сделать?