Помощь - Поиск - Пользователи - Календарь
Полная версия: Помагите решить
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
cyxarik
Сведения об автомобилях сост в файлах (марк, номер, фио) . Нужно вывести количество автомобилей каждой марки .

Uses crt;
type
zap=record
mark:string;
nomer:string;
FIO:string;


end;
var
k:integer;
f:file of zap;
name:string;

procedure vvod(var name:string);
var
i,n:integer;
a:zap;
f:file of zap;
begin
clrscr;
write('Vvedite im9I faila: ');
readln(name);
assign(f,name);
rewrite(f);
write('Vvedite kol-vo mashin : ');
readln(n);
for i:=1 to n do
begin
clrscr;
with a do
begin
write('Vvedite marky mashini: ');
readln(mark);
write('Vvedite nomer: ');
readln(nomer);
write('Vvedite FIO vladelca: ');
readln(FIO);

end;
write(f,a);
end;
close(f);
end;

procedure add(name:string);
var
i,x,n:integer;
a:zap;
f:file of zap;
begin
clrscr;
assign(f,name);
write('Vvedite kol-vo mashin, informaciu kotorix nada dobavitb v file: ');
readln(x);
reset(f);
seek(f,filesize(f));
for i:=1 to x do
begin
clrscr;
with a do
begin
write('Vvedite marky: ');
readln(mark);
write('Vvedite nomer: ');
readln(nomer);
write('Vvedite FIO: ');
readln(FIO);


end;
write(f,a);
end;
n:=n+x;
close(f);
end;

procedure vivod1(name:string);
var
n,z:integer;
a:zap;
f:file of zap;
begin
clrscr;
assign(f,name);
write('vvedite nomer zapisi,dannie o kotoroy cledyet prosmotretb: ');
readln(z);
reset(f);
if z>filesize(f) then writeln('V faile menwee kol-vo zapisey, 4em vvedenoe 4islo!')
else
begin
seek(f,z-1);
read(f,a);
write(a.mark,': ',' nomer: ',a.nomer,' FIO: ',a.FIO );
end;
readkey;
close(f);
end;

procedure vivod(name:string);
var
i,n:integer;
a:zap;
f:file of zap;
begin
clrscr;
assign(f,name);
reset(f);
i:=0;
while not(eof(f)) do
begin
i:=i+1;
read(f,a);
writeln(a.mark,': ,',' nomer: ',a.nomer,' FIO: ',a.FIO);
end;
readkey;
close(f);
end;

procedure modif(name:string);
var
i,n,k,z,w:integer;
a:zap;
f:file of zap;
q:array[1..25] of zap;
begin
assign(f,name);
reset(f);
repeat
clrscr;
writeln('1 - Izmenenie zapisi');
writeln('2 - Exit');
write('‚ўҐ¤ЁвҐ ‚ и ўлЎ®а: ');
readln(k);
if k=1 then
begin
write('Vvedite nomer zapisi,kotoruy nugno izmenitb: ');
readln(z);
w:=filesize(f);
if (w<z) then writeln('v faile menwee kol-vo zapisey, 4em vvedenoe 4islo!')
else
begin
write('Vvedite marky mashini: ');
readln(a.mark);
write('Vvedite nomer: ');
readln(a.nomer);
write('Vvedite FIO: ');
readln(a.FIO);
seek(f,z-1);
write(f,a);
end;
end;
readkey;
until k=2;
close(f);
end;

procedure OPERACIA(name:string);
var
i,n,k:integer;
a:zap;
xz:string;
f:file of zap;

begin
clrscr;
assign(f,name);
reset(f);
while not(eof(f)) do
begin
read(f,a);
if (a.mark=xz) then
begin
i:=i+1;
xz:=a.mark;
writeln(a.mark,': ',i);
end
else
begin
i:=0;
xz:=a.mark;
writeln(a.mark,': ',i);
end;

end;
readkey;
end;



begin
clrscr;
repeat
clrscr;
writeln('MENU:');
writeln('1 - Vvod dannix');
writeln('2 - Dopolnenie faila novimi zapisjami');
writeln('3 - Vivod odnoy zapisi');
writeln('4 - Vivod vcex zapisey');
writeln('5 - Izmenenie zapisey');
writeln('6 - Vivod kol-vo avtomobiley kagdoy marki');
writeln('7 - EXIT');
write('Vvedite vash vibor: ');
readln(k);
case k of
1:vvod(name);
2:add(name);
3:vivod1(name);
4:vivod(name);
5:modif(name);
6:operacia(name);
end;
until k=7;
end.

Осталось зделать только вывод количества автомобилей каждой марки, тело проги я пометил красным,
посмотрите там ошибки пожалуйста.
klem4
опиши немного по другому данные, примерно так:

type
TAutoType = ( { тип - марка авто }
atBMW,
atVAZ,
atVOLVO,
atTOYOTA
);

TRecord = record
auto_type: TAutoType; { поле - марка авто }
// ...
end;


ps прочитай правила и оформи тему как следует.

var
{ массив будет хранить количество авто каждой марки}
counts: array [ TAutoType ] of Integer = (
0, 0, 0, 0
);

i, record_count: Integer;
x: array [1..100] of TRecord; { твой массив записей }
begin
// ...
for i := 1 to record_count do
inc(counts[X[i].auto_type]); { увеличиваем количество соотв. марки авто}
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.