Помощь - Поиск - Пользователи - Календарь
Полная версия: Вложенные записи
Форум «Всё о Паскале» > 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. 

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