Проверка файла с данными на наличие записи

Задача

В текстовом файле содержатся сведения о количестве учащихся в классах и их классных руководителях. Количество классов в школе не превышает 20. Для описания каждого класса отводится одна строка. В первых четырех позициях каждой строки файла записано имя класса (например, 5a, 10b) класса (не пишите русских букв), а затем количество человек в нем и ФИО руководителя. Программа по запросу выдает сведения о классе или сообщение о том, что класс не найден.

Решение

 

Описание переменных: 

school – массив записей, считанных из файла;
title_search – введенное пользователем имя класса.

Алгоритм решения задачи: 

  1. Данные из файла считываются в массив записей. Каждая запись содержит имя класса (title), количество учеников (pupils), сведения о руководителе (teacher).
  2. Пользователь вводит имя класса. Если его длина равна 0, то происходит выход из цикла с помощью команды break.
  3. Строка, введенная пользователем, дополняется до 4-х символов пробелами.
  4. Если имя класса не совпадет ни с одним полем title записей массива, то флаговая переменная found останется равной false, появится сообщение об отсутствии указанного класса.
  5. В случае совпадения все поля соответствующей записи будут выведены на экран.

Программа на языке Паскаль: 

 

const n = 20;
type
    str4 = string[4];
    clas = record
        title: str4;
        pupils: byte;
        teacher: string[25];
    end;
var
    school: array[1..n] of clas;
    i,j,len: integer;
    title_search: str4;
    found: boolean;
    f: text;
begin
    assign(f,'c:/school.txt'); reset(f);
    i := 1;
    while not Eof(f) do begin
        with school[i] do 
            readln(f,title,pupils,teacher);
        i := i + 1;
    end;
    while true do begin
        write('Input class: ');
        readln(title_search);
        len := length(title_search);
        if len = 0 then break;
        for j := len + 1 to 4 do
            title_search := title_search + ' ';
        found := false;
        for j := 1 to i - 1 do begin
            if title_search <> school[j].title then continue;
            with school[j] do
                writeln(title:5,pupils:5,teacher:25);
            found := true;
            break;
        end;
        if not found then
            writeln('No class!');
    end;
end.

 

Примечания: 

Для выхода их программы достаточно нажать Enter без ввода данных.

В текстовом файле число, обозначающее количество человек в классе, должно начинаться с 5-й позиции.

 

Тема

Файлы

Уровень

Комбинированные задачи

Добавить комментарий