BlackShadow тебе можно памятник ставить - спасибо!!!
Только вот еще одно НО!К первой проге заставили составить блок-схему. Как ее делать? Как записи там обозначать?А с файлами какие блоки? Помогите плиз!!!
Код
Const
N = 20;
Type
TMonths=Array[0..1] Of Boolean;
TIzdanie=Record
Title:String[20];
Tip:Char;
Months:TMonths
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 TIzdanie
End;
Const
Names:Array[0..2] Of String = ('Ivanov','Petrov','Sidorov'); {Дополнишь сам}
Streets:Array[0..2] Of String = ('Pervaya','Vtoraya','Tretyaya'); {См. выше}
Titles:Array[0..2] Of String = ('Programmer','Lamer','Sysop'); {Ну ты догадался}
Tips:Array[0..2] Of Char = ('G','J','D'); {Буквы на угад. Типы изданий.}
MName:Array[0..11] Of String = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
Var
Chels:Array[0..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 N] 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) + Byte((x Mod N) <> 0))
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 #',Addr.Home,' in flat ',Addr.Flat);
WriteLn(f,' Subscribed For ',Count,' izdaniya:');
Val(Count,x,e)
End;
For j:=0 To x-1 Do
With Chels[i + (j Div N)].Izdaniya[j Mod N] Do
Begin
Write(f,' ',Title,' (',Tip,') :');
For k:=0 To 11 Do
If Months[k] Then
Write(f,MName[k],' ');
WriteLn(f)
End;
Inc(i,(x Div N) + Byte((x Mod N) <> 0))
End;
Close(f)
End.