- •1. Краткие теоретические сведения
- •1. Файловый ввод-вывод. Текстовые файлы
- •1.1. Организация ввода и вывода. Файловая система
- •1.2. Текстовые файлы
- •1.3. Основные методы обработки текстовых файлов
- •2. Файловый ввод-вывод. Двоичные файлы
- •2.1. Двоичные файлы
- •2.2. Последовательный доступ к элементам двоичных файлов
- •2.3. Организация произвольного доступа к элементам двоичных файлов
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1.
- •2.4.2. Задание 2. Вычисление с использованием структур
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.5. Домашние задания
- •2.5.1. Задание 1. Запись в файл массивов структур
- •2.5.1.1. Условие задания
- •2.5.1.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.5.2. Задание 2. Формирование и запись в файл массивов структур
- •2.5.2.1. Условие задания
- •2.5.2.2. Пример выполнения работы для варианта 31
- •2.5.2.3. Программа
- •2.5.2.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1. Файловый ввод-вывод. Текстовые файлы 2
- •1.1. Организация ввода и вывода. Файловая система 2
2.5.1.2. Пример для варианта 30
Создать массив структур, содержащий информацию о студентах: ФИО, номер группы, оценки за последнюю сессию. Вывести информацию о студентах группы ИНФО-101 в порядке убывания среднего балла.
2.4.3.3. Программа
//Лабораторная работа № 14
//Задание № 2
//Выполнил ст. Иванов А.А.
//20 мая 2012 г.
#include <iostream.h>
#include <string.h>
#include <conio.h> // подключение библиотеки функций ввода-вывода
int main ()
{
struct strc // Объявление структуры strc
{ char fio[40];
char ngr[9];
int otc[5];
double sb;
}
mstud[100]; // Объявление массива структур mstud
int nst, i, j;
cout << "Vvedite kol-vo studentov <=100" << endl;
cin >> nst;
for (i=0; i < nst; i++) // Ввод информации о студентах
{
cout << "Vvedite FIO: ";
cin >> mstud[i].fio;
cout << "Vvedite nomer gr: ";
cin >> mstud[i].ngr;
cout << "Vvedite 5 otcenok" << endl;
mstud[i].sb = 0;
for (j=0; j<5; j++) // Ввод пяти оценок
{ // за последнюю сессию
cin >> mstud[i].otc[j];
mstud[i].sb += mstud[i].otc[j] / 5.; // Вычисление
} // среднего балла студента
cout << endl;
}
strc stemp;
for (i=0; i < nst-1; i++) // Сортировка по среднему баллу
for (j=i+1; j<nst; j++)
if (mstud[i].sb < mstud[j].sb
&& !strcmp (mstud[i].ngr, "ИНФО-101")
&& !strcmp (mstud[j].ngr, "ИНФО-101"))
{
stemp = mstud[i]; // Перестановка структур
mstud[i] = mstud[j];
mstud[j] =stemp;
}
for (i=0; i < nst; i++)
if (!strcmp (mstud[i].ngr, "ИНФО-101")) // Вывод информации
cout << mstud[i].fio << " " << mstud[i].ngr << " "
<< mstud[i].sb << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
2.4.3.4. Тестирование
2.5.2. Задание 2. Формирование и запись в файл массивов структур
Создать массив структур, содержащий информацию согласно варианту индивидуального задания. Структуры (исходную и сформированную по запросу) сохранить в отдельных файлах. Выполнить задание и вывести на экран полученный результат.
Замечание: для ускорения выполнения задания рекомендуется воспользоваться результатами лабораторной работы № 14. Программирование с использованием структур, выполненной в предыдущем семестре.
2.5.2.1. Условие задания
Таблица 17.7
№ |
Задание |
1 |
Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы); • вывод на экран фамилий и номеров групп для всех студентов, включенных, в массив, если средний балл студента больше 4,0 (если таких студентов нет, вывести соответствующее сообщение). |
2 |
Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по алфавиту); • вывод на экран фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2 (если таких студентов нет, вывести соответствующее сообщение). |
3 |
Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT(записи должны быть упорядочены по возрастанию среднего балла); • вывод на экран фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5 (если таких студентов нет, вывести соответствующее сообщение). |
4 |
Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT(записи должны быть упорядочены по возрастанию среднего балла); • вывод на экран фамилий и номеров групп для всех студентов, имеющих оценки 5 по всем предметам (если таких студентов нет, вывести соответствующее сообщение). |
5 |
Описать структуру с именем AER0FL0T, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из семи элементов типа AER0FL0T (записи должны быть размещены в алфавитном порядке по названиям пунктов назначения); • вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры (если таких рейсов нет, вывести соответствующее сообщение). |
6 |
Описать структуру с именем WORKER, содержащую следующие поля: • фамилия и инициалы работника; • название занимаемой должности; • год поступления на работу. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER (записи должны быть упорядочены по алфавиту); • вывод на экран фамилий работников, стаж работы которых превышает значение, введенное с клавиатуры (если таких работников нет, вывести соответствующее сообщение. |
7 |
Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN (записи должны быть размещены в алфавитном порядке по названиям пунктов назначения); • вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени (если таких поездов нет, вывести соответствующее сообщение). |
8 |
Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN (записи должны быть упорядочены по времени отправления поезда); • вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры (если таких поездов нет, вывести соответствующее сообщение). |
9 |
Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN (записи должны быть упорядочены по номерам поездов); • вывод на экран информации о поезде, номер которого введен с клавиатуры (если таких поездов нет, вывести соответствующее сообщение). |
10 |
Описать структуру с именем MARSH, содержащую следующие поля: • название начального пункта маршрута; • название конечного пункта маршрута; • номер маршрута. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH (записи должны быть упорядочены по номерам маршрутов); • вывод на экран информации о маршруте, номер которого введен с клавиатуры (если таких маршрутов нет, вывести соответствующее сообщение). |
11 |
Описать структуру с именем MARSH, содержащую следующие поля: • название начального пункта маршрута; • название конечного пункта маршрута; • номер маршрута. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH (записи должны быть упорядочены по номерам маршрутов); • вывод на экран информации о маршрутах, которые начинаются или оканчиваются в пункте, название которого введено с клавиатуры (если таких маршрутов нет, вывести соответствующее сообщение). |
12 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть упорядочены по дате рождения); • вывод на экран информации о человеке, номер телефона которого введен с клавиатуры (если такого нет, вывести соответствующее сообщение). |
13 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть размещены по алфавиту); • вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры (если таких нет, вывести соответствующее сообщение). |
14 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть упорядочены по трем первым цифрам номера телефона); • вывод на экран информации о человеке, чья фамилия введена с клавиатуры (если такого нет, вывести соответствующее сообщение). |
15 |
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK (записи должны быть упорядочены по дате рождения); • вывод на экран информации о человеке, чья фамилия введена с клавиатуры (если такого нет, вывести соответствующее сообщение). |
16 |
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK (записи должны быть упорядочены по дате рождения); • вывод на экран информации о людях, родившихся под знаком, название которого введено с клавиатуры (если таких нет, вывести соответствующее сообщение). |
17 |
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK (записи должны быть упорядочены по знакам Зодиака); • вывод на экран информации о людях, родившихся в месяц, значение которого введено с клавиатуры (если таких нет, вывести соответствующее сообщение). |
18 |
Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE (записи должны быть упорядочены в алфавитном порядке по названиям товаров); • вывод на экран информации о товаре, название которого введено с клавиатуры (если таких товаров нет, вывести соответствующее сообщение). |
19 |
Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE (записи должны быть упорядочены в алфавитном порядке по названиям магазинов); • вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры (если такого магазина нет, вывести соответствующее сообщение). |
20 |
Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE (записи должны быть упорядочены в алфавитном порядке по названиям товаров); • вывод на экран информации о товарах, стоимость которых ниже средней по магазину. |
21 |
Описать структуру с именем WORKER, содержащую следующие поля: • фамилия и инициалы работника; • название занимаемой должности; • год поступления на работу. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER (записи должны быть упорядочены по алфавиту); • вывод на экран фамилий работников, стаж работы которых превышает среднее значение (старые сотрудники). |
22 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата постановки на учет (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть размещены по дате постановки на учет); • вывод на экран информации о людях, вставших на учет ранее даты введенной с клавиатуры. |
23 |
Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE (записи должны быть упорядочены в алфавитном порядке по названиям товаров); • вывод на экран информации о товарах, стоимость которых превышает среднюю по магазину. |
24 |
Описать структуру с именем ORDER, содержащую следующие поля: • расчетный счет плательщика; • расчетный счет получателя; • перечисляемая сумма в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ORDER (записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков); • вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры (если такого расчетного счета нет, вывести соответствующее сообщение). |
25 |
Описать структуру с именем WORKER, содержащую следующие поля: • фамилия и инициалы работника; • название занимаемой должности; • год поступления на работу. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER (записи должны быть упорядочены по алфавиту); • вывод на экран фамилий работников, стаж работы которых больше значения введенного с клавиатуры (если таких сотрудников нет, вывести соответствующее сообщение). |
26 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата постановки на учет (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть размещены по дате постановки на учет); • вывод на экран информации о людях, вставших на учет позднее даты введенной с клавиатуры. |
27 |
Описать структуру с именем ORDER, содержащую следующие поля: • расчетный счет плательщика; • расчетный счет получателя; • полученная сумма в рублях. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ORDER (записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков); • вывод на экран информации о сумме, полученной на расчетный счет получателя, введенного с клавиатуры (если такого расчетного счета нет, вывести соответствующее сообщение). |
28 |
Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления; • время в пути. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN (записи должны быть размещены в алфавитном порядке по названиям пунктов назначения); • вывод на экран информации о поездах, время в пути которых меньше среднего значения. |
29 |
Описать структуру с именем WORKER, содержащую следующие поля: • фамилия и инициалы работника; • название занимаемой должности; • год поступления на работу. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER (записи должны быть упорядочены по алфавиту); • вывод на экран фамилий работников, стаж работы которых меньше среднего значения (молодые сотрудники). |
30 |
Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • адрес. Ключевые поля: фамилия и имя. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть размещены по фамилии); • вывод на экран информации об адресе и телефоне по фамилии, введенной с клавиатуры. |
31 |
Описать структуру с именем AER0FL0T, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из семи элементов типа AER0FL0T (записи должны быть упорядочены по возрастанию номера рейса); • вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры (если таких рейсов нет, вывести сообщение). |