IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помагите решить, Задачка, записи, нужна вывести количество
cyxarik
сообщение 9.01.2008 15:32
Сообщение #1


Гость






Сведения об автомобилях сост в файлах (марк, номер, фио) . Нужно вывести количество автомобилей каждой марки .

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
сообщение 9.01.2008 18:29
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


опиши немного по другому данные, примерно так:

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.


Сообщение отредактировано: klem4 - 9.01.2008 18:32


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"