Найти фамилии владельцев и номер автомобилей заданной пользователем марки - Pascal
Формулировка задачи:
Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл, содержащий сведения об автомобилях. Найти:
а) фамилии владельцев и номер автомобилей заданной пользователем марки
б) количество автомобилей каждой марки
нашёл в интернете, не совсем то что нужно, но практически идентично, может кому понадобится
program mawini; uses crt; type Car_rec=record Marka:string[40]; Vladelez:string[30]; nomer:integer; end; var car:car_rec; f:file of car_rec; marka_car:string[30]; procedure cr_input_file; var i,n:integer; begin assign(f,'C:\biblio.dat'); rewrite(f); write('Введите количество необходимых записей:'); readln(n); for i:=1 to n do begin write('Запись',i,','); write('Владелец:'); readln(car.vladelez); write('Название Марки:'); readln(car.marka); write('Номер Машини:'); readln(car.nomer); write(f,car); writeln('--------------------------------------------'); end; close(f); end; procedure outputfile; var i:integer; begin assign(f,'c:\Biblio.dat'); reset(f); writeln('Каталог машин'); writeln('---------------------------------------------'); writeln('#',' Владелец ',' Марка ',' Номер'); i:=1; while not EOF(f) do begin read(f,car); writeln(i,car.vladelez:10,car.marka:9,car.nomer:8); i:=i+1; end; readln; close(f); end; procedure search; var k,i:integer; flag:boolean; begin assign(f,'c:\biblio.dat'); reset(f); writeln('Введите марку машини:'); readln(marka_car); writeln('----------------------------------'); k:=0; flag:=false; i:=1; while not EOF(f) do begin read(f,car); if marka_car=car.marka then begin writeln(i,' ',car.vladelez,' ',car.marka,' ',car.nomer); flag:=true; k:=k+1; end; i:=i+1; end; if flag then writeln('V biblioteke naideno ',k,' marok') else writeln('takix marok netu'); readln; close(f); end; procedure menu; var ch:char; begin repeat clrscr; writeln; writeln('1. Создать и заполнить файл'); writeln('2. Открить фал для чтения'); writeln('3. Найти фамилию владельца'); writeln('4. Нажмите Esc для выхода '); ch:=readkey; case ch of '1':begin clrscr; cr_input_file; end; '2':begin clrscr; outputfile;end; '3':begin clrscr; search;end; end; until ch=#27; end; begin menu end.
Решение задачи: «Найти фамилии владельцев и номер автомобилей заданной пользователем марки»
textual
Листинг программы
program hhhh; uses crt; type A= record marka:string; nomer:integer; fam:string; end; Var car:A; S:string; i,n:integer; F:File of A; Begin Assign(f,'C:\car'); ReWrite(f); repeat Write('Введите колличество записей '); readLn(n); until n > 1; for i:=1 to n do begin With car do begin WriteLn('Марка : '); readLn(marka); WriteLn('Номер : '); readLn(nomer); WriteLn('Фамилия : '); readLn(fam); WriteLn; end; Write(f,car); end; close(f); end.
Объяснение кода листинга программы
Этот код написан на языке Pascal и выполняет следующие действия:
- Создает тип данных
A
, который представляет запись с маркой автомобиля, номером и фамилией владельца. - Объявляет переменные
car
,S
,i
иn
для работы с файлом и вводом/выводом данных. - Открывает файл
f
на дискеC:\car
. - Перезаписывает содержимое файла.
- Запрашивает у пользователя количество записей, которые он хочет добавить в файл.
- В цикле
repeat
считывает данные от пользователя для каждой записи. - Для каждой записи:
- Выводит сообщение с запросом ввода марки автомобиля.
- Считывает введенную марку.
- Выводит сообщение с запросом ввода номера автомобиля.
- Считывает введенный номер.
- Выводит сообщение с запросом ввода фамилии владельца.
- Считывает введенную фамилию.
- Выводит информацию о введенных данных.
- Записывает информацию о каждой записи в файл.
- Закрывает файл.
Обратите внимание, что этот код использует встроенную функцию
readLn()
, которая считывает ввод пользователя и переходит на новую строку. Также он использует циклrepeat
, чтобы позволить пользователю ввести количество записей, которые он хочет добавить в файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д