Программа на структуру WORKER, записи должны быть размещены по алфавиту

О задаче:
[свернуть]

По книге:C/C++ Программирование на языке высокого уровня: Учебник для вузов 
Автор книги: Павловская Татьяна Александровна
Задача на тему: Структуры
Вариант задачи: 6 — (на странице 146)’ style=’default’ collapse_link=’true’]

Условия задачи:
[свернуть]

1. Описать структуру с именем WORKER, содержащую следующие поля:
[свернуть]

  • NAME — фамилия и инициалы работника;
  • POS — название занимаемой должности;
  • YEAR — год поступления на работу.

‘ style=’default’ collapse_link=’true’]

2. Написать программу, выполняющую следующие действия:
[свернуть]

  • ввод с клавиатуры данных в массив TABL, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
  • вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение введенное с клавиатуры; 
  • если таких работников нет, вывести на дисплей соответствующее сообщение.

‘ style=’default’ collapse_link=’true’]

Листинг(исходник) программы:
[свернуть]

#include <iostream>
#include <locale>
using namespace std;
#define Num 5
struct WORKER{	char NAME[80];
char POS[20];
int YEAR;};
WORKER TABL[Num];

void main(){
setlocale(LC_ALL,"Russian");	// Объявляем локализацию текста в консоли
for(int i=0; i<Num; i++) // Заполнение структуры данными
{	 system("cls");
cin.get();cout<<"Введите ФИО работника: "; cin.getline(TABL[i].NAME,80);
cout<<"Введите должность работника: ";	cin>>TABL[i].POS;
cout<<"Введите год поступления на работу: "; cin>>TABL[i].YEAR;
}
/////////////////////Сортировка по Алфавиту//////////////////////////////////////////////////////////////
for (int i=0; i<Num; i++)
{
for(int j=0; j<Num; j++)
{
if(TABL[i].NAME[0] < TABL[j].NAME[0])
{
swap(TABL[i], TABL[j]);
}
else if(TABL[i].NAME[0] == TABL[j].NAME[0])
{
if(TABL[i].NAME[1] < TABL[j].NAME[1])
{
swap(TABL[i], TABL[j]);
}
}
}
}/////////////////////Вывод работников по алфавиту///////////////////
system("cls");
for (int i=0; i<Num; i++)
{
cout<<"ФИО работника: "<<TABL[i].NAME<<endl;
cout<<"Должность работника: "<<TABL[i].POS<<endl;
cout<<"Год поступления на работу: "<<TABL[i].YEAR<<endl;
cout<<endl;
}
/////////////////////Поиск работников имеющих стаж работы отличный от введенного числа///////////////////
system("pause");system("cls");
short Year; bool flag = false; // Объявляем переменные
cout<<"\\nВведите нужный вам год и вы узнаете работников \\nимеющих стаж работы не меньше года: ";
AskYear:	cin>>Year; system("cls"); // Ввод года и очистка консоли от записей
if(Year <= 0 )	{
cout<<"Вы ввели недопустимый год! Введите корректный год :"; goto AskYear; // Запрос на повторный ввод значения "год"
}
else
{
for(int i=0; i<Num; i++)	// Цикл перебора массива структур TABL поля NAME 
{
if(TABL[i].YEAR < Year)	 // Условие проверяющее стаж работника с введенным годом с клавиатуры
{
for(int j=0; j<sizeof(TABL[i].NAME); j++) // Цикл проверки строки NAME
{
if(TABL[i].NAME[j] == \' \')	// Проверка символов на равенство "пробел" или нет.
{
break;	 // Вывод из цикла если "пробел"
}
else
{
cout<<TABL[i].NAME[j]; //Вывод символа если не равен "пробелу"
}
}
cout<<endl;
flag = true;
}
}
}
if( flag == false) cout<<"Работников со стажем не найдено.\\n\\n"; //Вывод сообщения о том что сотрудников со стажем не найдено	system("pause");}

‘ style=’default’ collapse_link=’true’]

Автор: Павел Кадыров

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *