Помощь - Поиск - Пользователи - Календарь
Полная версия: Вложенные записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
he11i
задача:
Имеется док-т в виде справки длЯ 10 чел. Описать его ввиде записи по след форме
______________________________________
| Сотрудник .......| Должность | Мес. оклад...|
_______________| ................ | .....................|
|Фам | таб номер| ................. | .................... |
klem4
type
TWorker = Record
name: String; // фио
tabNumber: LongInt; // табельный номер
end;

TRecord = Record
W: TWorker; // сотрудник
workType: String; // должность
money: LongInt; // оклад
end;


так чтоли ?
he11i
Цитата(klem4 @ 22.04.2007 20:55) *

type
TWorker = Record
name: String; // фио
tabNumber: LongInt; // табельный номер
end;

TRecord = Record
W: TWorker; // сотрудник
workType: String; // должность
money: LongInt; // оклад
end;


так чтоли ?

Как их в массив забить ? Он при вводе не видит вложенную запись
klem4
x: Array [1..5] of TRecord;

// ...

for i := 1 to 5 do
x[i].W.name := 'Вася';
he11i

program SR;
uses crt;
type
TWorker = Record
name: String[20];
tabNumber: LongInt;
end;

TRecord = Record
W: TWorker;
workType: String[10];
money: LongInt;

end;
spr=array[1..10] of trecord;

var
a:spr;
i,x,b:integer;


procedure vvod;
begin
clrscr;
writeln('BBeguTe kol-vo zapisey');
readln(b);
for i:=1 to b do
begin
writeln('BBeguTe gaHHbIe');
writeln('Surname?');
readln(a[i].w.name);
writeln('Table number?');
readln(a[i].w.tabnumber);
writeln('WorkType?');
readln(a[i].worktype);
writeln('Money?');
readln(a[i].money);
end;
end;

procedure vivod;
var
j:integer;
begin
clrscr;
j:=3;
gotoxy(13,1);write('sotrudnik');
gotoxy(45,1);write('WorkType ');
gotoxy(65,1);writeln('Money ');
gotoxy(2,2);write('Surname ');
gotoxy(25,2);write('Tablenumber ');
writeln;
for i:=1 to b do
begin
j:=j+1;
gotoxy(2,j);write(a[i].w.name);
gotoxy(26,j);write(a[i].w.tabnumber:4);
gotoxy(48,j);write(a[i].worktype);
gotoxy(67,j);write(a[i].money);
writeln;
end;
readln;
end;

procedure vibor;
var
j:integer;
s:string[20];
begin
clrscr;
writeln('BBeguTe surname');
readln(s);
clrscr;
j:=3;
gotoxy(13,1);write('sotrudnik');
gotoxy(45,1);write('WorkType ');
gotoxy(65,1);writeln('Money ');
gotoxy(2,2);write('Surname ');
gotoxy(25,2);write('Tablenumber ');
writeln;
for i:=1 to b do
begin
if a[i].w.name=s then begin
j:=j+1;
gotoxy(2,j);write(a[i].w.name);
gotoxy(26,j);write(a[i].w.tabnumber:4);
gotoxy(48,j);write(a[i].worktype);
gotoxy(67,j);write(a[i].money);
writeln;
end;
end;
readln;
end;
begin
repeat
clrscr;
gotoxy(30,8);write('1 - VVod dannih');
gotoxy(30,10);write('2 - Vivod dannih');
gotoxy(30,12);write('3 - Viborka sotrudnika');
gotoxy(30,14);writeln('4 - Exit');
gotoxy(30,18);readln(x);

case x of
1:vvod;
2:vivod;
3:vibor;

end;
until x=4;


end.

Корректно ли написана программа?)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.