menu
person


ГДЗ Информатика 10 класс Семакин §29 Комбинированный тип данных


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

1. Чем комбинированный тип данных отличается от регулярного типа данных (массива)?

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

2. Что такое запись?

Запись (record) в программировании - это комбинированный тип данных, который может содержать поля различных типов данных.

3. Опишите комбинированный тип для записей, содержащих следующие данные учеников: фамилию, имя, год рождения, рост (в сантиметрах), вес (в килограммах).

type
  Student = record
    LastName: string;
    FirstName: string;
    BirthYear: integer;
    HeightCM: integer;
    WeightKG: real;
  end;

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

Иванов Иван 2005 175 65.5
Петров Петр 2006 170 60.0
Сидорова Ольга 2005 160 55.2

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

1) определение среднего роста и среднего веса всех учеников;

2) вывод на экран и в файл rost.txt списка (фамилии, имена, возраст) учеников, рост которых выше среднего роста;

3) вывод на экран и в файл ves.txt списка учеников, вес которых ниже среднего веса.

program StudentsProcessing;

type
  Student = record
    LastName: string;
    FirstName: string;
    BirthYear: integer;
    HeightCM: integer;
    WeightKG: real;
  end;

var
  InputFile: text;
  StudentData: Student;
  TotalHeight, TotalWeight: real;
  Count: integer;
  AvgHeight, AvgWeight: real;
  RostFile, VesFile: text;

begin
  Assign(InputFile, 'students.txt');
  Reset(InputFile);

  TotalHeight := 0;
  TotalWeight := 0;
  Count := 0;

  while not eof(InputFile) do
  begin
    read(InputFile, StudentData);
    TotalHeight := TotalHeight + StudentData.HeightCM;
    TotalWeight := TotalWeight + StudentData.WeightKG;
    Count := Count + 1;
  end;

  if Count > 0 then
  begin
    AvgHeight := TotalHeight / Count;
    AvgWeight := TotalWeight / Count;
  end
  else
  begin
    AvgHeight := 0;
    AvgWeight := 0;
  end;

  writeln('Средний рост всех учеников: ', AvgHeight:0:2, ' см');
  writeln('Средний вес всех учеников: ', AvgWeight:0:2, ' кг');

  Assign(RostFile, 'rost.txt');
  Rewrite(RostFile);
  Assign(VesFile, 'ves.txt');
  Rewrite(VesFile);

  Reset(InputFile);

  while not eof(InputFile) do
  begin
    read(InputFile, StudentData);
    if StudentData.HeightCM > AvgHeight then
      writeln(RostFile, StudentData.LastName, ' ', StudentData.FirstName, ' ', StudentData.BirthYear);
    if StudentData.WeightKG < AvgWeight then
      writeln(VesFile, StudentData.LastName, ' ', StudentData.FirstName, ' ', StudentData.BirthYear);
  end;

  Close(InputFile);
  Close(RostFile);
  Close(VesFile);
end.

6. Решите предыдущую задачу, не используя в программе массива записей. Подсказка: оператор Reset можно использовать в программе многократно для повторного чтения файла, начиная с его первой записи.

program StudentsProcessingNoArray;

type
  Student = record
    LastName: string;
    FirstName: string;
    BirthYear: integer;
    HeightCM: integer;
    WeightKG: real;
  end;

var
  InputFile: text;
  StudentData: Student;
  TotalHeight, TotalWeight: real;
  Count: integer;
  AvgHeight, AvgWeight: real;
  RostFile, VesFile: text;

begin
  Assign(InputFile, 'students.txt');
  Reset(InputFile);

  TotalHeight := 0;
  TotalWeight := 0;
  Count := 0;

  while not eof(InputFile) do
  begin
    read(InputFile, StudentData);
    TotalHeight := TotalHeight + StudentData.HeightCM;
    TotalWeight := TotalWeight + StudentData.WeightKG;
    Count := Count + 1;
  end;

  if Count > 0 then
  begin
    AvgHeight := TotalHeight / Count;
    AvgWeight := TotalWeight / Count;
  end
  else
  begin
    AvgHeight := 0;
    AvgWeight := 0;
  end;

  writeln('Средний рост всех учеников: ', AvgHeight:0:2, ' см');
  writeln('Средний вес всех учеников: ', AvgWeight:0:2, ' кг');

  Assign(RostFile, 'rost.txt');
  Rewrite(RostFile);
  Assign(VesFile, 'ves.txt');
  Rewrite(VesFile);

  Reset(InputFile);

  while not eof(InputFile) do
  begin
    read(InputFile, StudentData);
    if StudentData.HeightCM > AvgHeight then
      writeln(RostFile, StudentData.LastName, ' ', StudentData.FirstName, ' ', StudentData.BirthYear);
    if StudentData.WeightKG < AvgWeight then
      writeln(VesFile, StudentData.LastName, ' ', StudentData.FirstName, ' ', StudentData.BirthYear);
  end;

  Close(InputFile);
  Close(RostFile);
  Close(VesFile);
end.


Вы просматриваете решебник ГДЗ Информатика 10 класс Семакин параграф 29

Сообщить о неточной информации или отсутствии ответов
Проверочный код, год рождения Д.И.Менделеева:
В каком задании/вопросе ошибка:
Как должно быть: