Найти фамилии владельцев, номера и марки самого старого и самого нового автомобилей - 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.
Объяснение кода листинга программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д