Pascal ABC Тема Записи С клавиатуры вводится номер школы. Файл содержит

Pascal ABC Тема Записи С клавиатуры вводится номер школы. Файл содержит сведения: фамилию, имя воспитанника, номер школы. Определить кол-во учеников в школе с данным номером с клавиатуры

Задать свой вопрос
2 ответа
Считаем, что поля записи в текстовом файле разбиты эмблемой ";", тогда задачку можно решить так:

type

  Person = record

    fname: string;//Фамилия ученика

    lname: string;//Имя

    school: integer;//Номер щколы

  end;

 

var student: Person;

n,s,p:integer;

tmp:string;

fin:text;//Файловая переменная


begin

  assign(fin, 'students.txt');

  reset(fin);

  readln(n);//Получаем номер школы

  while not (eof(fin)) do 

  begin

    readln(fin, tmp);//Читаем строчку из файла

    p:= Pos(';', tmp); 

    Delete(tmp, 1, p);//устраняем все до первого разделителя

    p:= Pos(';', tmp); 

    Delete(tmp, 1, p);//устраняем все до второго разделителя

    // в tmp остался номер школы

    student.school:=strtoint(tmp);

    if student.school=n then s+=1; 

  end;

  writeln(s);

end.

Вадим Ануфреев
Прдразумевалось, что поля в разных строчках в текстовом файле
Ангелина
Из условия задачки это не видно. Тогда решение значительно упрощается. Не надобно в строке разыскивать разделители, а считываете каждую третью строку из файла и она будет содержать номер школы.
Борис Чурей
Да
Перечень воспитанников в файле data.txt(см. вложение)

//Pascal
type
  TPupils = record
    firstname, surname: string;
    schoolNumber: integer;
  end;

var
  f: text;
  s, buf: string;
  i, j, tmp: byte;
  num, countPupils: integer;
  A: array [1..200] of TPupils;
begin
  assign(f, 'data.txt');
  reset(f);
  j := 1;
  while not eof(f) do
  begin
    readln(f, buf);
    buf := buf + ' ';
    tmp := 1;

    for i := 1 to length(buf) do
    begin
      if pos(buf[i], ' ') = 0 then s := s + buf[i]
      else
      begin
        if length(s) gt; 0 then
        begin
        case tmp of
          1: begin  A[j].firstname := s; Inc(tmp); end;
          2: begin A[j].surname := s; Inc(tmp); end;
          3:
          begin
            Val(s, num, num);
            A[j].schoolNumber := num;
          end;
        end;
        //writeln(s);
        s := '';
        end;
      end;
    end;
    Inc(j);
  end;
  close(f);

  write('Введите школы: ');
  readln(num);

  for i := 1 to 200 do
  begin
    if A[i].schoolNumber = num then
      //writeln(A[i].firstname, ' ', A[i].surname, ' ',
      //        A[i].schoolNumber);
      Inc(countPupils);
  end;
  writeln('Количество воспитанников в данной школе = ',
          countPupils);
end.
Ева Цюцькома
Спасибо огромное, я сообразил, как сделать еще проще!!!
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт