Сведения об автомобиле состоят из его марки, номера и фамилии владельца - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

1. Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл f, содержащий сведения о нескольких автомобилях. Найти: а) фамилии владельцев и номера автомобилей данной марки; б) количество автомобилей каждой марки. Найденные данные записать в файл g.
Надо найденные данные записать в g. Никак не получается.

Решение задачи: «Сведения об автомобиле состоят из его марки, номера и фамилии владельца»

textual
Листинг программы
uses crt;
 
const
  nmax = 20;
  line = '--------------------------------------------';
  shap = '|      Марка      |   Номер   |  Владелец  |';
 
type
  avto = record
    m: string[15];
    n: string[10];
    v: string[10];
  end;
 
var
  f: file of avto;
  r: byte;
  g: text;
 
procedure Vvod(var ff: file of avto);
var
  i, nn: byte;
  z: avto;
begin
  clrscr;
  rewrite(ff);
  repeat
    write('Количество автомобилей, не более ', nmax, ', n=');readln(nn);
  until nn in [1..nmax];
  writeln('Внесите данные об автомобилях');
  for i := 1 to nn do
  begin
    with z do
    begin
      write('Марка: ', i, ' автомобиля ');readln(m);
      write('Номер: ');readln(n);
      write('Фамилия владельца: ');readln(v);
    end;
    write(ff, z);
  end;
  close(ff);
  writeln('для продолжения нажмите Enter');
  readln;
end;
 
procedure Vyvod(ff: file of avto);
var
  z: avto;
  nn: integer;
begin
  clrscr;
  reset(ff);
  nn := 0;
  writeln(g, 'Данные об автомобилях');
  writeln(g, line);
  writeln(g, shap);
  writeln(g, line);
  while not eof(ff) do
  begin
    inc(nn);
    read(ff, z);
    with z do
    begin
      writeln(g, '|', m:16, '|':2, n:10, '|':2, v:11, '|':2);
      writeln(g, line);
    end;
  end;
  writeln(g, line);
  writeln(g, 'Всего автомобилей ', nn);
  writeln(g);
  writeln(g, 'для продолжения нажмите Enter');
  readln;
end;
 
procedure Poisk(ff: file of avto);
var
  k: byte;
  mm: string;
  z: avto;
begin
  clrscr;
  write('Марка для поиска: ');
  readln(mm);
  k := 0;
  reset(ff);
  writeln(g, 'Данные об автомобилях марки "', mm, '"');
  while not eof(ff) do
  begin
    read(ff, z);
    with z do
      if m = mm then
      begin
        inc(k);
        if k = 1 then
        begin
          writeln(g, line);
          writeln(g, shap);
          writeln(g, line);
        end;
        writeln(g, '|', m:16, '|':2, n:10, '|':2, v:11, '|':2);
        writeln(g, line);
      end;
  end;
  writeln(g, line);
  writeln(g, 'Всего автомобилей ', k);
  writeln(g);
  close(f);
  writeln('для продолжения нажмите Enter');
  readln;
end;
 
procedure Count(ff: file of avto);
var
  mar: array [1..nmax] of string;
  kol: array [1..nmax] of integer;
  i, j, k, d: byte;
  z: avto;
begin
  clrscr;
  i := 0;
  k := 0;
  reset(ff);
  while not eof(ff) do
  begin
    read(ff, z);
    with z do
    begin
      k := 0;
      for j := 1 to i do
        if mar[j] = m then inc(k);
      if k = 0 then
      begin
        inc(i);
        mar[i] := m;
      end;
    end;
  end;
  reset(ff);
  d := i;
  while not eof(ff) do
  begin
    read(ff, z);
    with z do
      for i := 1 to d do
        if mar[i] = m then inc(kol[i]);
  end;
  writeln(g, line);
  writeln(g, 'Количество автомобилей каждой марки:');
  for i := 1 to d do
    writeln(g, mar[i], '-', kol[i]);
  writeln(g);
  close(f);
  writeln('для продолжения нажмите Enter');
  readln;
end;
 
begin
  assign(f, 'avto.dta');
  if FileExists('avto.dta') then
    reset(f)
  else
    rewrite(f);
  assign(g, 'avto.txt');
  if FileExists('avto.txt') then
    append(g)
  else
    rewrite(g);
  r := 1;
  repeat
    writeln('0-завершение работы');
    writeln('1-ввод данных об автомобилях');
    writeln('2-вывод данных об автомобилях');
    writeln('3-вывод данных о владельцах автомобилей заданной марки');
    writeln('4-количество автомобилей каждой марки');
    readln(r);
    case r of
      1: Vvod(f);
      2: Vyvod(f);
      3: Poisk(f);
      4: Count(f);
    else r := 0;
    end;
  until r = 0;
end.

Объяснение кода листинга программы

  1. В первой части кода определены константы и типы данных для работы с информацией об автомобилях.
  2. В второй части кода определены процедуры для ввода, вывода и поиска информации об автомобилях.
  3. В третьей части кода определена процедура для подсчета количества автомобилей каждой марки.
  4. В основной части кода определена последовательность действий пользователя с использованием функций и процедур из второй и третьей частей кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы