Код
Const
N = 20;
Type
TMonths=Array[0..1] Of Boolean;
TIzdanie=Record
Title:Strin[20];
Tip:Char;
Months:TMonth
End;
TAddr=Record
Street:String[20];
Home:String[3];
Flat:String[3]
End;
TChel=Record
Name:String[20];
Uchastok:String[2];
Addr:TAddr;
Count:String[2];
Izdaniya:Array[0..N-1] Of TIzdan
End;
Const
Names:Array[0..2] Of String = ('Ivanov','Petrov','Sidorov'); {Дополнишь сам}
Streets:Array[0..2] Of Stirng = ('Pervaya','Vtoraya','Tretyaya'); {См. выше}
Titles:Array[0..2] Of String = ('Programmer','Lamer','Sysop'); {Ну ты догадался}
Tips:Array[0..2] Of Char = ('G','J','D'); {Буквы на угад. Типы изданий.}
MName:Array[0..1] Of String = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
Var
Chels:Array[1..100] Of TChel;
TotalChels:Integer;
TotalRecords:Integer;
{Придумывает человечка и сохраняет его в массиве}
Procedure GenerateChel;
Var
x,i,j:Integer;
Begin
With Chels[TotalRecords] Do
Begin
Name:=Names[Random(3)]; {Придумаем имя}
Str(Random(100),Uchastok); {Придумаем участок}
Addr.Street:=Streets[Random(3)]; {Придумаем улицу}
Str(Random(1000),Addr.Home); {Дом}
Str(Random(1000),Addr.Flat) {Квартиру}
x:=Random(50)+1; {Вот столько изданий он и выписал}
Str(x,Count);
End;
{Придумаем ему издания}
For i:=0 To x-1 Do
With Chels[TotalRecords+(i Div N)].Izdaniya[i Mod M] Do
Begin
Title:=Titles[Random(3)]; {Название}
Tip:=Tips[Random(3)]; {Тип}
For j:=0 To 11 Do
Months[j]:=Random(2)=0; {Месяцы подписки}
End;
Inc(TotalRecords,x Div N)
End;
Var
f:Text;
i,j,k,x,e:Integer;
Begin
Randomize;
TotalChels:=Random(30); {Не более 30 человек, где 0 значит, что 1 чел
всё-таки есть}
TotalRecords:=0; {В массиве Chels пока ничего нет}
For i:=0 To TotalChels Do {придумаем всех челов}
GenerateChel;
Assign(f,'Chels.Txt'); {Создадим файл}
ReWrite(f);
i:=0;
While i < TotalRecords Do {И скинемтуда все записи}
Begin
With Chels[i] Do
Begin
WriteLn(f,Name);
WriteLn(f,' From Uchastok ',Uchastok);
WriteLn(f,' That Lives At ',Addr.Street,' in house #',Home,' in flat ',Flat);
WriteLn(f,' Subscribed For ',Count,' izdaniy:');
Val(s,x,e)
End;
For j:=0 To x-1 Do
With Chels[i + (j Div N)].Izdaniya[j Mod N] Do
Begin
Write(f,Ttitle,' (',Tip,') :');
For k:=0 To 11 Do
If Months[k] Then
Write(f,MName[k]);
WriteLn(f)
End;
Inc(i,1 + (x Div N))
End;
Close(f)
End.
Должно быть так.
сли что не так - свисти, отвечу.