![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Окран |
![]()
Сообщение
#1
|
Гость ![]() |
Умоляю помочь сделать данную задачу до завтрашнего дня!!!!!Очень прошу!!Сам вышел из больницы 2 дня назад и в первый же день учебы лабараторная по паскалю на котором я был всего на 1-2 лекциях а потом загремел по состоянию здоровья в больницу!!!Пожалуйста!!!!
Код Полугодовая информация о изданиях по каждому подчиненному имеет следующую структуру: ФИО - 20 знаков участок доставки - 2 знака адрес кол-во выписанных изданий - 2 знака список изданий адрес в свою очередь состоит из следующих компонентов: улица - 20 знаков номер дома - 3 знака номер квартиры - 3 знака Список изданий состоит из следующих компонентов: название - 20 знаков вид - 1 знак(газета, журнал) месяцы на которые оформлена подписка. Список изданий представляет собой массив структур, содержащий N элементов из которых заполнены K - количествовыписанных изданий.Если подписчик оформил подписку на более чем N изданий то для него имеется 2 или более записи идущие подряд.Информация о месяцах подписки может быть представлена в виде массива из 12 логических элементов. А теперь само задание :) : создайте файл о подписных изданиях. |
![]() ![]() |
BlackShadow |
![]()
Сообщение
#2
|
Гость ![]() |
Код 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. Старею... Без компилятора уже трудновато ![]() |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 19:01 |