В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
olegkuchmak
olegkuchmak
22.04.2022 17:34 •  Информатика

Pascal abc тема записи с клавиатуры вводится номер школы. файл содержит сведения: фамилию, имя ученика, номер школы. определить кол-во учеников в школе с заданным номером с клавиатуры

Показать ответ
Ответ:
Chokoladik
Chokoladik
07.10.2020 21:44
Список учеников в файле 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) > 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.
0,0(0 оценок)
Ответ:
Kamper5678
Kamper5678
07.10.2020 21:44
Считаем, что поля записи в текстовом файле разделены символом ";", тогда задачу можно решить так:

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.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота