Массивы структур

Определяются массивы структур так же, как и массивы других типов данных. Естественное отличие – служебное слово struct в названии структурного типа.

Для введенного ранее структурного типа можно определить:

struct goods list [10];

Операции над указателями на структуры

Эти операции не отличаются от операций над другими указателями на данные. Если присвоить указателю на структуру конкретного структурного типа значение адреса одного из элементов массива структур того же типа, то, изменяя значение указателя (например, с помощью операций ++ или --), можно равномерно перемещаться по массиву структур.

//Программа вычисляет сумму заданного количества комплексных чисел,

//представленных в программе массивом array[] структур

#include "stdafx.h"

#include "conio.h"

#include "locale.h"

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL,"Russian");

struct complex

{//определение структурного типа complex

float x;//вещественная часть

float y;//мнимая часть

} array [] = {1.0, 2.0, 3.0, -4.0,

-5.0, -6.0, -7.0, -8.0};

struct complex summa = {0.0, 0.0};

struct complex *point = &array[0];

int k, i;

k = sizeof(array)/sizeof(array[0]);

for(i = 0; i<k; i++)

{

summa.x += point->x;

summa.y += point->y;

point++;

}

printf("\n Сумма: real = %5.2f\n imag = %5.2f",

summa.x, summa.y);

getch();

}

 

Результат выполнения программы:

Сумма: real = -8.00, imag = -16.00

Варианты заданий к практической работе №1

Вариант 1

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

· фамилия и инициалы;

· номер группы;

· успеваемость (массив из пяти элементов).

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

· ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по возрастанию номера группы;

· вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0;

· если таких студентов нет, вывести соответствующее сообщение.

 

Вариант 2

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

· фамилия и инициалы;

· номер группы;

· успеваемость (массив из пяти элементов).

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

· ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по возрастанию среднего балла;

· вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5;

· если таких студентов нет, вывести соответствующее сообщение.

 

Вариант 3

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

· фамилия и инициалы;

· номер группы;

· успеваемость (массив из пяти элементов).

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

· ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по алфавиту;

· вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;

· если таких студентов нет, вывести соответствующее сообщение.

 

Вариант 4

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

· название пункта назначения рейса;

· номер рейса;

· тип самолета.

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

· ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT, записи должны быть упорядочены по возрастанию номера рейса;

· вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;

· если таких рейсов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 5

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

· название пункта назначения рейса;

· номер рейса;

· тип самолета.

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

· ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT, записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;

· вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;

· если таких рейсов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 6

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

· фамилия и инициалы работника;

· название занимаемой должности;

· год поступления на работу.

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

· ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER, записи должны быть размещены по алфавиту;

· вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;

· если таких работников нет, выдать на дисплей соответствующее сообщение.

 

Вариант 7

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

· название пункта назначения;

· номер поезда;

· время отправления.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN, записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;

· вывод на дисплей информации о поездах, отправляющихся после введенного с клавиатуры времени;

· если таких поездов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 8

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

· название пункта назначения;

· номер поезда;

· время отправления.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN, записи должны быть упорядочены по времени отправления поезда;

· вывод на дисплей информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;

· если таких поездов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 9

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

· название пункта назначения;

· номер поезда;

· время отправления.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN, записи должны быть упорядочены по номерам поездов;

· вывод на дисплей информации о поезде, номер которого введен с клавиатуры;

· если таких поездов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 10

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

· название начального пункта маршрута;

· название конечного пункта маршрута;

· номер маршрута.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH, записи должны быть упорядочены по номерам маршрутов;

· вывод на дисплей информации о маршруте, номер которого введен с клавиатуры;

· если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

 

Вариант 11

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

· название начального пункта маршрута;

· название конечного пункта маршрута;

· номер маршрута.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH, записи должны быть упорядочены по номерам маршрутов;

· вывод на дисплей информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры;

· если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

Вариант 12

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

· фамилия, имя;

· номер телефона;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE, записи должны быть упорядочены по датам дней рождения;

· вывод на дисплей информации о человеке, номер телефона которого введен с клавиатуры;

· если такого нет, выдать на дисплей соответствующее сообщение.

 

Вариант 13

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

· фамилия, имя;

· номер телефона;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE, записи должны быть размещены по алфавиту;

· вывод на дисплей информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;

· если таких нет, выдать на дисплей соответствующее сообщение.

 

Вариант 14

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

· фамилия, имя;

· номер телефона;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE, записи должны быть упорядочены по трем первым числам номера телефона;

· вывод на дисплей информации о человеке, чья фамилия введена с клавиатуры;

· если такого нет, выдать на дисплей соответствующее сообщение.

 

Вариант 15

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

· фамилия, имя;

· знак Зодиака;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK, записи должны быть упорядочены по датам дней рождения;

· вывод на дисплей информации о человеке, чья фамилия введена с клавиатуры;

· если такого нет, выдать на дисплей соответствующее сообщение.

 

Вариант 16

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

· фамилия, имя;

· знак Зодиака;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK, записи должны быть упорядочены по датам дней рождения;

· вывод на дисплей информации о людях, родившихся под знаком, наименование которого введено с клавиатуры;

· если таких нет, выдать на дисплей соответствующее сообщение.

Вариант 17

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

· фамилия, имя;

· знак Зодиака;

· день рождения (массив из трех чисел).

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK, записи должны быть упорядочены по знакам Зодиака;

· вывод на дисплей информации о людях, родившихся в месяц, значение которого введено с клавиатуры;

· если таких нет, выдать на дисплей соответствующее сообщение.

Вариант 18

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

· название товара;

· название магазина, в котором продается товар;

· стоимость товара в рублях.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE, записи должны быть размещены в алфавитном порядке по названиям товаров;

· вывод на дисплей информации о товаре, название которого введено с клавиатуры;

· если таких товаров нет, выдать на дисплей соответствующее сообщение.

Вариант 19

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

· название товара;

· название магазина, в котором продается товар;

· стоимость товара в рублях.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE, записи должны быть размещены в алфавитном порядке по названиям магазинов;

· вывод на дисплей информации о товарах, продающихся в магазине, название которого введено с клавиатуры;

· если такого магазина нет, выдать на дисплей соответствующее сообщение.

 

Вариант 20

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

· расчетный счет плательщика;

· расчетный счет получателя;

· перечисляемая сумма в рублях.

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

· ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ORDER, записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков;

· вывод на дисплей информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;

· если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.