Структуры в качестве параметров функции

Структуру можно передать в функцию как параметр. При этом используется передача параметра по ссылке, то есть в структуру передается адрес переменной структурного типа.

# include < iostream.h >

struct Student {

int ID ;

char name [ 10 ] ;

int age ;

} ;

void input ( Student * ) ;

main ( ) {

Student List ;

input ( &List ) ;

cout << List.ID << List.name << List.age ;

return 0 ;

}

void input ( Student *L ) {

cin >> L->ID ;

cin >> L->name ;

cin >> L->age ;

}

Задания к самостоятельной работе

1. Описать структуру с именем Student, содержащую следующие поля: name, group, ses(успеваемость - массив из 5 элементов). Ввести с клавиатуры данные в массив stud1, состоящий из 10 структур типа student. Записи упорядочить по алфавиту. Вывести на экран фамилии и номера групп для всех студентов, имеющих оценки 4 и 5, если таких нет, то вывести соответствующее сообщение.

2. Описать структуру с именем Train, содержащую следующие поля: nazn(название пункта назначения), num(номер поезда), time(время отправления). Ввести с клавиатуры данные в массив rasp, состоящий из 6 структур типа Train. Записи упорядочить по номерам поездов. Вывести на экран информацию о поезде, номер которого введен с клавиатуры, если такого поезда нет, то вывести соответствующее сообщение.

3. Описать структуру с именем worker, содержащую следующие поля: name, pos(должность), year(год поступления на работу). Ввести с клавиатуры данные в массив tabl, состоящий из 10 структур типа worker. Записи упорядочить по дате поступления на работу. Вывести на экран фамилии работников, чей стаж работы превышает значение, введенное с клавиатуры, если таких нет, то вывести соответствующее сообщение.

Лабораторная работа 6

Файлы

В С++ ввод и вывод осуществляются через потоки. Поток (stream) - абстрактный канал связи, который создается в программе для обмена данными с файлами и стандартными устройствами ввода-вывода. По направлению передачи данных различают следующие потоки:

1. Входные потоки, из которых извлекаются данные (istream);

2. Выходные потоки, в которые записываются значения из программы (ostream);

3. Двунаправленный поток, который допускает и чтение, и запись.

При подключении библиотечного файла iostream.h создаются потоки cin и cout. Работа с файлами также осуществляется через потоки, при этом требуется подключить файл fstream.h. Этот файл позволяет создавать следующие потоки:

ifstream для чтения данных,

ofstream для записи данных,

fstream для чтения и записи данных.

Работу с файлами можно подразделить на 4 этапа:

1. Создание потока (объявление потоковой переменной). Переменные потока ввода из файла имеют тип ifstream, переменные потока вывода в файл имеют тип ofstream.

2. Связывание потока с файлами и открытие файла для работы в определенном режиме. Для связи файла с потоком используется функция open ( ) .

3. Обмен данными с файлом через поток: запись в поток, чтение из потока. Информация из потоков считывается с помощью операций “ >> ” - извлечь из потока. Запись информации в файл осуществляется с помощью операции “ << ” - отправить в поток.

4. Разрыв связи потока с файлом: закрытие файла и разрыв его связи с потоком. Файл закрывается с помощью функции close ( ).

Пример. Написать программу, которая считывает две переменные из файла и записывает результат в другой файл.

Для решения этой задачи необходимо создать в программе Блокнот файл Т1.txt и записать два числа, а затем запустить программу.

# include < fstream.h >

main ( ) {

ifstream in; // объявление входного потока

ofstream out; // объявление выходного потока

in.open (“ T1.txt ”); // связь потока с файлом

out.open (“T2.txt”);

int a, b, c;

in >> a >> b ; // чтение данных из файла

c = a + b ;

out << c ; // запись результата в файл

in.close ( ) ; // разрыв потока с файлом

out.close ( ) ; // разрыв потока с файлом

return 0;

}

Режимы открытия файла

Файлы могут открываться в различных режимах. Режим открытия файла определяется с помощью определенных констант.

Константа Режим Позиция в файле
ate Используется для работы с файлами произвольного доступа По умолчанию конец файла либо любая позиция в файле
app Используется для добавления данных в файл Конец файла
nocreate Не создает новый файл. Если файл не существует, операция открытия не выполняется  
noreplace Не замещать. Если файл существует, то операция его открытия не выполняется  
in Открытие файла для чтения Начало файла
out Открытие файла для записи Начало файла

Наши рекомендации