Лабораторная работа №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;}

Задания для самостоятельного выполнения:

  1. Описать структуру с именем Student, содержащую следующие поля:
  • фамилия;
  • номер группы;
  • успеваемость (массив из 5 элементов).

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

  • ввод с клавиатуры данных в массив, состоящий из 10 элементов типа Student;
  • записи упорядочить по возрастанию номера группы;
  • вывести фамилии тех студентов, чей средний балл больше 4,0. Если таких студентов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Aeroflot, содержащую следующие поля:
  • название пункта назначения;
  • номер рейса;
  • тип самолета.

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

  • ввод с клавиатуры данных в массив, состоящий из 7 элементов типа Aeroflot;
  • записи упорядочить по возрастанию номера рейса;
  • вывести номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры. Если таких нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Train, содержащую следующие поля:
  • название пункта назначения;
  • номер поезда;
  • время отправления.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Train;
  • записи упорядочить в алфавитном порядке по названиями пунктов назначения;
  • вывести информацию о поездах, отправляющихся после введенного с клавиатуры времени. Если таких поездов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Marsh, содержащую следующие поля:
  • название начального пункта маршрута;
  • название конечного пункта маршрута;
  • номер маршрута.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Marsh;
  • записи упорядочить по номерам маршрутов;
  • вывести информацию о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры. Если таких маршрутов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Note, содержащую следующие поля:
  • фамилия;
  • номер телефона;
  • день рождения (массив из 3 чисел).

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Note;
  • записи упорядочить по датам дней рождения;
  • вывести информацию о человеке, номер телефона которого введен с клавиатуры. Если такого нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Znak, содержащую следующие поля:
  • фамилия;
  • знак Зодиака;
  • день рождения (массив из 3 чисел).

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Znak;
  • записи упорядочить по датам дней рождения;
  • вывести информацию о человеке, чья фамилия введена с клавиатуры. Если такого нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Price, содержащую следующие поля:
  • название товара;
  • название магазина, в котором продается товар;
  • стоимость товара в рублях.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Price;
  • записи упорядочить по алфавиту относительно названия товара;
  • вывести информацию о товаре, название которого введено с клавиатуры. Если таких товаров нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Order, содержащую следующие поля:
  • расчетный счет плательщика;
  • расчетный счет получателя;
  • перечисляемая сумма в рублях.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Order;
  • записи упорядочить в алфавитном порядке по расчетным счетам плательщика;
  • вывести информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Student, содержащую следующие поля:
  • фамилия;
  • номер группы;
  • успеваемость (массив из 5 элементов).

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

  • ввод с клавиатуры данных в массив, состоящий из 10 элементов типа Student;
  • записи упорядочить по возрастанию среднего балла;
  • вывести фамилии студентов, имеющих оценки 4 и 5. Если таких студентов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Aeroflot, содержащую следующие поля:
  • название пункта назначения;
  • номер рейса;
  • тип самолета.

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

  • ввод с клавиатуры данных в массив, состоящий из 7 элементов типа Aeroflot;
  • записи упорядочить в алфавитном порядке по названиям пунктов назначения;
  • вывести пункты назначения и номера рейсов, обслуживаемых самолетом, тип которого  введен с клавиатуры. Если таких рейсов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Train, содержащую следующие поля:
  • название пункта назначения;
  • номер поезда;
  • время отправления.

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

  • ввод с клавиатуры данных в массив, состоящий из 6 элементов типа Train;
  • записи упорядочить по времени отправления поезда;
  • вывести информацию о поездах, направляющихся в пункт, название которого введено с клавиатуры времени. Если таких поездов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Marsh, содержащую следующие поля:
  • название начального пункта маршрута;
  • название конечного пункта маршрута;
  • номер маршрута.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Marsh;
  • записи упорядочить по номерам маршрутов;
  • вывести информацию о маршруте, номер которого введен с клавиатуры. Если таких маршрутов нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Note, содержащую следующие поля:
  • фамилия;
  • номер телефона;
  • день рождения (массив из 3 чисел).

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Note;
  • записи упорядочить по алфавиту;
  • вывести информацию о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры. Если таких нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Znak, содержащую следующие поля:
  • фамилия;
  • знак Зодиака;
  • день рождения (массив из 3 чисел).

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Znak;
  • записи упорядочить по датам дней рождения;
  • вывести информацию о людях, родившихся под знаком, наименование которого введено с клавиатуры. Если таких нет, вывести соответствующее сообщение.
  1. Описать структуру с именем Price, содержащую следующие поля:
  • название товара;
  • название магазина, в котором продается товар;
  • стоимость товара в рублях.

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

  • ввод с клавиатуры данных в массив, состоящий из 8 элементов типа Price;
  • записи упорядочить по алфавиту относительно названия магазина;
  • вывести информацию о товарах, продающихся в магазине, название которого введено с клавиатуры. Если такого магазина нет, вывести соответствующее сообщение.
Вернуться к теории