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

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

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

Сведения об автомобиле состоят из его марки, номера, года выпуска и фамилии владельца. Найти а. Фамилии владельцев заданной марки б. Фамилии владельцев, номера и марки самого старого и самого нового автомобилей в. Количество автомобилей каждой марки
Помогите если есть идеи и не длинные) экзамен.
Ладно не актуально уже)

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

textual
Листинг программы
uses crt;
const nmax=20;
      line='-----------------------------------------------------';
      shap='|      Марка      | Выпуск |   Номер   |  Владелец  |';
 
type avto=record
     m: string[15];
     w: integer;
     n: string[10];
     v: string[10];
     end;
 
var f: file of avto; r: byte;
 
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(w);
         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('Данные об автомобилях');
writeln(line);
writeln(shap);
writeln(line);
while not eof(ff) do
      begin
      inc(nn);
      read(ff,z);
      with z do
         begin
         writeln('|',m:16,'|':2,w:6,'|':3,n:10,'|':2,v:11,'|':2);
         writeln(line);
         end;
      end;
writeln(line);
writeln('Всего автомобилей ',nn);
writeln;
writeln('для продолжения нажмите 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('Данные об автомобилях марки "',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(line);
                 writeln(shap);
                 writeln(line);
                 end;
              writeln('|',m:16,'|':2,n:10,'|':2,v:11,'|':2);
              writeln(line);
              end;
      end;
writeln(line);
writeln('Всего автомобилей ',k);
writeln;
close(f);
writeln('для продолжения нажмите Enter');
readln;
end;
 
procedure PoiskA (ff: file of avto);
var k: byte; z: avto; ss,sn: integer;
begin
clrscr;
k:=0;
reset(ff);
while not eof(ff) do
      begin
      read(ff,z);
      inc(k);
      if k=1 then
         begin
         ss:=z.w; sn:=z.w;
         end;
      if z.w<ss then ss:=z.w;
      if z.w>sn then sn:=z.w;
      end;
writeln('Самые старые автомобили:');
k:=0;
reset(ff);
while not eof(ff) do
      begin
      read(ff,z);
      with z do
           if w=ss then
              begin
              inc(k);
              if k=1 then
                 begin
                 writeln(line);
                 writeln(shap);
                 writeln(line);
                 end;
              writeln('|',m:16,'|':2,n:10,'|':2,v:11,'|':2);
              writeln(line);
              end;
      end;
writeln(line);
writeln('Всего автомобилей ',k);
writeln;
writeln('Самые новые автомобили:');
k:=0;
reset(ff);
while not eof(ff) do
      begin
      read(ff,z);
      with z do
           if w=sn then
              begin
              inc(k);
              if k=1 then
                 begin
                 writeln(line);
                 writeln(shap);
                 writeln(line);
                 end;
              writeln('|',m:16,'|':2,n:10,'|':2,v:11,'|':2);
              writeln(line);
              end;
      end;
writeln(line);
writeln('Всего автомобилей ',k);
writeln;
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(line);
writeln('Количество автомобилей каждой марки:');
for i:=1 to d do
    writeln(mar[i],'-',kol[i]);
writeln;
close(f);
writeln('для продолжения нажмите Enter');
readln;
end;
 
begin
assign(f,'D:\avto.dta');
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.

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


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


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

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

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