Консультация № 174007
06.11.2009, 03:12
0.00 руб.
0 6 0
Возникла проблема с задачей (записи):

Ввести массив записей, каждый из которых содержит сведения о фамилии автора и названии книги. Построить новый массив записей, который содержит дополнительно сведения о годе издания. Год издания берется из массива записей, который содержит название книги и год.

И моя неполная работа :
Program n8;
uses crt;
type
zap=record
fam:string [20];
naz:string;
end;
mas=array[1..10] of zap;
var
i:integer;
c:mas;

PROCEDURE ADD; {ввод записей и формирование массива}
begin
i:=1;
repeat
with c do
begin
writeln ('input name:');
readln (fam);
writeln ('input naz');
readln (naz);
i:=i+1;
end;
writeln('continue y/n');
until readkey='n';
end;

дальше что-то не получается...если можно, то доделайте программку с процедурами!

Заранее огромное всем спасибо!!!

Обсуждение

Неизвестный
06.11.2009, 07:31
общий
Хм. Судя по заданию, тут напрашиваются объекты. Не с ними ли надо?
Неизвестный
06.11.2009, 10:23
общий
Никакие объекты тут не нужны...
Просто в исходной процедуре есть ошибка:
with c do
следует заменить на
with c[i] do .

Да и НЕ отрывайте от процедур writeln и readln скобку, пишите слитно: writeln('text');
Думаю, что дальнейшее написание остального кода у Вас также получится.
Неизвестный
06.11.2009, 22:12
общий
Вот дописала прогу(запускается, но выводит совсем не то, что хотелось бы)...подскажите, пожалуйста, где моя ошибка...буду рада любой помощи!!!

Program n8;
uses crt;
var
famnaz : array[1..10] of record
fam : string;
naz : string;
end;
nazgod : array[1..10] of record
naz : string;
god : string;
end;
allinf : array[1..10] of record
fam : string;
naz : string;
god : string;
end;

i, i1:integer;

PROCEDURE ADD; {ввод записей и формирование массива}
begin
i:=1; repeat
writeln ('input fam:');
readln(famnaz.fam);
writeln ('input naz');
readln (famnaz.naz);
i:=i+1;
writeln('continue y/n');
until readkey='n';
end;

PROCEDURE ADD1; {ввод записей и формирование массива}

begin
i:=1; repeat
writeln ('input naz');
readln (nazgod[i1].naz);
writeln ('input god:');
readln(nazgod[i1].god);
i:=i+1;
writeln('continue y/n');
until readkey='n';
end;

procedure mas3;
begin
for i := 1 to 10 do begin
allinf.fam := famnaz.fam;
allinf.naz := famnaz.naz;
for i1 := 1 to 10 do begin
if famnaz.naz = nazgod[i1].naz then begin
allinf.god := nazgod[i1].god;
end;
end;
if allinf.god = '' then begin
allinf.god := 'net';
end;
end;
write(' ',famnaz.fam);
write(' ',famnaz.naz);
write(' ',allinf.god);
writeln;
end;
begin
add;
add1;
mas3;

readln;
end.
Неизвестный
06.11.2009, 23:04
общий
{
Program n8;
uses crt;
var
famnaz : array[1..10] of record
fam : string;
naz : string;
end;
nazgod : array[1..10] of record
naz : string;
god : string;
end;
allinf : array[1..10] of record
fam : string;
naz : string;
god : string;
end;

i, i1:integer;

PROCEDURE ADD; {ввод записей и формирование массива}
begin
i:=1; repeat
writeln ('input fam:');
readln(famnaz[i].fam);
writeln ('input naz');
readln (famnaz[i].naz);
i:=i+1;
writeln('continue y/n');
until readkey='n';
end;

PROCEDURE ADD1; {ввод записей и формирование массива}

begin
i:=1; repeat
writeln ('input naz');
readln (nazgod[i1].naz);
writeln ('input god:');
readln(nazgod[i1].god);
i:=i+1;
writeln('continue y/n');
until readkey='n';
end;

procedure mas3;
begin
for i := 1 to 10 do begin
allinf[i].fam := famnaz[i].fam;
allinf[i].naz := famnaz[i].naz;
for i1 := 1 to 10 do begin
if famnaz[i].naz = nazgod[i1].naz then begin
allinf[i].god := nazgod[i1].god;
end;
end;
if allinf[i].god = '' then begin
allinf[i].god := 'net';
end;
end;
write(' ',famnaz[i].fam);
write(' ',famnaz[i].naz);
write(' ',allinf[i].god);
writeln;
end;
begin
add;
add1;
mas3;

readln;
end. }
Неизвестный
06.11.2009, 23:27
общий
Здравствуйте!
Вот немного исправленный Ваш код:
(исправленное выделено красным цветом
Код:
PROCEDURE ADD1; {ввод записей и формирование массива}

begin
i:=1; repeat
writeln ('input naz');
readln (nazgod[i].naz);{тут, думаю, очевидно почему i, а не i1}
writeln ('input god:');
readln(nazgod[i].god);
i:=i+1;
writeln('continue y/n');
until readkey='n';
end;

procedure mas3;
begin
for i := 1 to 10 do begin
allinf[i].fam := famnaz[i].fam;
allinf[i].naz := famnaz[i].naz;
for i1 := 1 to 10 do begin
if famnaz[i].naz = nazgod[i1].naz then begin
allinf[i].god := nazgod[i1].god;
end;
end;
if allinf[i].god = '' then begin
allinf[i].god := 'net';
end;
{end;}
write(' ',famnaz[i].fam);
write(' ',famnaz[i].naz);
write(' ',allinf[i].god);
writeln;
end;{чтобы выводились все записи массива, а не только последняя}
end;


Успехов!
Неизвестный
06.11.2009, 23:46
общий
Огромное вам спасибо!)
Вы меня спасли!!!

Форма ответа