Лабораторная работа №18
Структурный тип данных
Решение нулевого варианта
Задача. Описать структуру Worker, содержащую следующие поля:
- фамилию работника;
- название занимаемой должности;
- год поступления на работу.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 10 элементов типа Worker;
- отсортировать данные в массиве по алфавиту относительно фамилии;
- вывести фамилии тех работников, чей стаж больше величины, введенной с клавиатуры. Если таких нет, вывести соответствующее сообщение.
Структура Worker содержит 3 поля: фамилия работника (переменная surname типа char), название занимаемой должности (переменная position типа char) и год поступления на работу (переменная year типа unsigned short int).
Объявим массив структур типа Worker, содержащий 10 элементов:
int n=10;
Worker *K=new Worker[n];
Ввод данных в массив будет осуществляться в цикле.
В другом цикле будет вычисляться стаж работников (now_year-K[i].year). Если стаж работника больше величины, введенной с клавиатуры (переменная seniority типа unsigned short), то его фамилия выводится на экран и переменная people логического типа принимает значение true. Если таких работников нет, то значение переменная people остается false и выводится на экран сообщение «no one».
Сортировка данных в массиве будет осуществляться в массиве при помощи функции strcmp, которая сравнивает в лексикографическом порядке две строки и возвращает целое значение в зависимости от результата сравнения:
<0, если первая строка меньше второй и
=0, если строки равны и
>0, если первая строка больше второй.
Для обмена данными, объявим промежуточную temp переменную типа Worker.
Текст программы:
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Worker { // начало объявления структурного типа Worker
char surname [30]; //объявление поля «фамилия работника»
char position [15]; //объявление поля «название занимаемой должности»
unsigned short int year; //объявление поля «год поступления на работу»
}; //конец объявление структуры Worker
int _tmain(int argc, _TCHAR* argv[])
{int n=10; // объявление константы n — числа элементов типа «Worker»
bool people=false;
unsigned short int now_year=2015, seniority; // объявление переменных now_year — текущий год и seniority — стаж
Worker *K=new Worker[n];
Worker temp;
for (int i=0; i<n; i++)
{cout<<"surname:";
cin>>K[i].surname;
cout<<"\nposition: ";
cin>>K[i].position;
cout<<"\nyear: ";
cin>>K[i].year;}
cout<<"enter number: ";
cin>>seniority;
for (int i=0; i<n; i++)
{if ((now_year-K[i].year)>seniority)
{cout<<'\n'<<K[i].surname;
people=true;}}
if (people=false) cout<<"no one";
for (int i=0; i<n-1; i++)
{for (int j=0; j<n; j++)
if (strcmp(K[i].surname, K[j].surname)>0)
{temp=K[i];
K[i]=K[j];
K[j]=temp;}}
for (int i=0; i<n; i++)
cout<<'\n'<<K[i].surname<<endl;
system("pause");
return 0;}
Задания для самостоятельного выполнения:
- Описать структуру с именем Student, содержащую следующие поля:
- фамилия;
- номер группы;
- успеваемость (массив из 5 элементов).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 10 элементов типа Student;
- записи упорядочить по возрастанию номера группы;
- вывести фамилии тех студентов, чей средний балл больше 4,0. Если таких студентов нет, вывести соответствующее сообщение.
- Описать структуру с именем Aeroflot, содержащую следующие поля:
- название пункта назначения;
- номер рейса;
- тип самолета.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 7 элементов типа Aeroflot;
- записи упорядочить по возрастанию номера рейса;
- вывести номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры. Если таких нет, вывести соответствующее сообщение.
- Описать структуру с именем Train, содержащую следующие поля:
- название пункта назначения;
- номер поезда;
- время отправления.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Train;
- записи упорядочить в алфавитном порядке по названиями пунктов назначения;
- вывести информацию о поездах, отправляющихся после введенного с клавиатуры времени. Если таких поездов нет, вывести соответствующее сообщение.
- Описать структуру с именем Marsh, содержащую следующие поля:
- название начального пункта маршрута;
- название конечного пункта маршрута;
- номер маршрута.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Marsh;
- записи упорядочить по номерам маршрутов;
- вывести информацию о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры. Если таких маршрутов нет, вывести соответствующее сообщение.
- Описать структуру с именем Note, содержащую следующие поля:
- фамилия;
- номер телефона;
- день рождения (массив из 3 чисел).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Note;
- записи упорядочить по датам дней рождения;
- вывести информацию о человеке, номер телефона которого введен с клавиатуры. Если такого нет, вывести соответствующее сообщение.
- Описать структуру с именем Znak, содержащую следующие поля:
- фамилия;
- знак Зодиака;
- день рождения (массив из 3 чисел).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Znak;
- записи упорядочить по датам дней рождения;
- вывести информацию о человеке, чья фамилия введена с клавиатуры. Если такого нет, вывести соответствующее сообщение.
- Описать структуру с именем Price, содержащую следующие поля:
- название товара;
- название магазина, в котором продается товар;
- стоимость товара в рублях.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Price;
- записи упорядочить по алфавиту относительно названия товара;
- вывести информацию о товаре, название которого введено с клавиатуры. Если таких товаров нет, вывести соответствующее сообщение.
- Описать структуру с именем Order, содержащую следующие поля:
- расчетный счет плательщика;
- расчетный счет получателя;
- перечисляемая сумма в рублях.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Order;
- записи упорядочить в алфавитном порядке по расчетным счетам плательщика;
- вывести информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, вывести соответствующее сообщение.
- Описать структуру с именем Student, содержащую следующие поля:
- фамилия;
- номер группы;
- успеваемость (массив из 5 элементов).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 10 элементов типа Student;
- записи упорядочить по возрастанию среднего балла;
- вывести фамилии студентов, имеющих оценки 4 и 5. Если таких студентов нет, вывести соответствующее сообщение.
- Описать структуру с именем Aeroflot, содержащую следующие поля:
- название пункта назначения;
- номер рейса;
- тип самолета.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 7 элементов типа Aeroflot;
- записи упорядочить в алфавитном порядке по названиям пунктов назначения;
- вывести пункты назначения и номера рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры. Если таких рейсов нет, вывести соответствующее сообщение.
- Описать структуру с именем Train, содержащую следующие поля:
- название пункта назначения;
- номер поезда;
- время отправления.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 6 элементов типа Train;
- записи упорядочить по времени отправления поезда;
- вывести информацию о поездах, направляющихся в пункт, название которого введено с клавиатуры времени. Если таких поездов нет, вывести соответствующее сообщение.
- Описать структуру с именем Marsh, содержащую следующие поля:
- название начального пункта маршрута;
- название конечного пункта маршрута;
- номер маршрута.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Marsh;
- записи упорядочить по номерам маршрутов;
- вывести информацию о маршруте, номер которого введен с клавиатуры. Если таких маршрутов нет, вывести соответствующее сообщение.
- Описать структуру с именем Note, содержащую следующие поля:
- фамилия;
- номер телефона;
- день рождения (массив из 3 чисел).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Note;
- записи упорядочить по алфавиту;
- вывести информацию о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры. Если таких нет, вывести соответствующее сообщение.
- Описать структуру с именем Znak, содержащую следующие поля:
- фамилия;
- знак Зодиака;
- день рождения (массив из 3 чисел).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Znak;
- записи упорядочить по датам дней рождения;
- вывести информацию о людях, родившихся под знаком, наименование которого введено с клавиатуры. Если таких нет, вывести соответствующее сообщение.
- Описать структуру с именем Price, содержащую следующие поля:
- название товара;
- название магазина, в котором продается товар;
- стоимость товара в рублях.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Price;
- записи упорядочить по алфавиту относительно названия магазина;
- вывести информацию о товарах, продающихся в магазине, название которого введено с клавиатуры. Если такого магазина нет, вывести соответствующее сообщение.