Учебник для 10 класса

ИНФОРМАТИКА

       

§ 29. Комбинированный тип данных

Все структурные типы данных, с которыми вы уже познакомились (массивы, строки), представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.

Комбинированный тип объявляется в программе в разделе типов:

Поля могут иметь любые типы, в том числе и комбинированный тип.

Например, данные о результатах экзаменов, полученных учеником по трем предметам, могут быть представлены одной величиной комбинированного типа:

После этого в разделе переменных следует описание:

Величина комбинированного типа называется записью. Элементы записи идентифицируются составными именами следующей структуры:

<имя переменной>.<имя поля>

Например: exam.family, exam.rus

В программе может использоваться массив, элементами которого являются записи.

Пример 1. На экзаменационном листе содержатся сведения о результатах экзаменов, сданных 30 учениками класса. Ввести эти данные в компьютер и получить список всех отличников.

В программе используется описание комбинированного типа results, приведенное выше. Исходные данные организуются в массив следующей структуры.

После ввода в этот массив исходных данных следует фрагмент программы:

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

А теперь обсудим проблему: как наиболее удобным способом организовать ввод данных в этой программе? Вводить с клавиатуры неудобно из-за большого объема данных. При каждом повторном запуске программы нужно начинать ввод сначала. А при отладке это наверняка придется делать многократно. Гораздо удобнее подготовить файл с исходными данными с помощью текстового редактора. После этого без проблем можно повторять ввод многократно. Так и поступим. Подготовим текстовый файл следующего вида:

Таблица содержит данные с фамилиями и оценками 30 учеников класса. Обратите внимание на то, что фамилии записываются в отдельных строках. Необходимость этого связана с реализацией алгоритма (см. далее): при вводе символьной строки прочитывается полностью очередная строка текстового файла до признака EOLN. При этом фамилии должны содержать не более 15 символов, а первые оценки (по русскому языку) — располагаться не раньше 16-й позиции в своей строке.

Сохраним этот файл в корневом каталоге логического диска Е под именем 10_a.txt. Составим программу с вводом таблицы успеваемости и выводом списка отличников. Фамилии отличников выведем на экран и сохраним в файле с именем Best.txt .


Пример 2. Решая рассмотренную задачу с оценками, можно обойтись без массива записей. Кроме того, можно не ставить ограничения на число учеников в классе. Их число выяснится в процессе чтения файла с таблицей успеваемости. Составим программу, которая кроме вывода списка фамилий отличников подсчитает их количество и процент отличников по отношению к полному составу класса.


В этой программе переменная I используется как счетчик числа учеников, а переменная К — как счетчик числа отличников.

Стандартная логическая функция EOF (end of file) примет значение True, когда процесс чтения из файла дойдет до его конца.

В результате выполнения программы кроме списка отличников на экран выведется строка:

Система основных понятий

Вопросы и задания

  1. Чем комбинированный тип данных отличается от регулярного типа данных (массива)?
  2. Что такое запись?
  3. Опишите комбинированный тип для записей, содержащих следующие данные учеников: фамилию, имя, год рождения, рост (в сантиметрах), вес (в килограммах).
  4. Опишите содержимое текстового файла, из которого будут вводиться данные, соответствующие описанию из предыдущего задания, для нескольких учеников класса (не менее пяти).
  5. Напишите программу, по которой будут введены данные из файла, описанного в предыдущем задании, и выполнена следующая обработка:
    • определение среднего роста и среднего веса всех учеников;
    • вывод на экран и в файл rost.txt списка (фамилии, имена, возраст) учеников, рост которых выше среднего роста;
    • вывод на экран и в файл ves.txt списка учеников, вес которых ниже среднего веса.
  6. Решите предыдущую задачу, не используя в программе массива записей. Подсказка: оператор Reset можно использовать в программе многократно для повторного чтения файла, начиная с его первой записи.

 

 

 

Top.Mail.Ru
Top.Mail.Ru