Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Деякі способи розбиття множин

Реферат Деякі способи розбиття множин





2> Генерування всіх понять В 

Для реалізації даного завдання на Pascal'е вводимо такі типи даних і змінних:

1) тип k - покажчик на запис, поля якої: s - буде містити поняття; p - кількість елементів у понятті; next - посилання на наступне поняття;

2) змінні f, pot типу k; f - вказує на перше поняття, тобто на просте поняття *; pot - поточний поняття;

3) масив str1 типу k - буде містити посилання на кожне поняття в складеному понятті;






program dyscretics_optimisation (input, output);

uses crt;

const

max = 12;

r: byte = 0;

type

k = ^ el;

El = record

S: string;

P: 1 .. Max-1;

Next: k

End;

Label met;

Var

Pot, f, l: k;

Str1: array [1 .. Max] of k;

Pow: 2 .. Max;

K1, i, j, ll: 1 .. Max;

Sum: 0 .. Max;

Fil: text;

Ki : string [2];

begin

Readln ( POW ); { вводимо кількість простих понять }

Str (POW, ki);

Assign ( fil , ki + '. mvp '); { отримані поняття будемо записувати в файл, що містить у своєму імені кількість елементів множини і з розширенням В«. mvp В» }

Rewrite ( fil );

New ( f ); { виділяємо пам'ять під перше поняття }

Pot: = f;

F ^. S : = '*'; { і инициализируем його }

F ^. P : = 1;

New ( f ^. next ); { виділяємо пам'ять під друге поняття }

Pot: = f ^. next;

Pot ^. s : = '(*)'; { І також його инициализируем }

Pot ^. p: = +1;

Pot ^. next: = nil;

for i: = 2 to POW do begin { основний цикл програми }

For j : = 1 to i do str 1 [ j ]: = f ; { встановлюємо початкові покажчики поняття, розмірності и , на перше поняття }

If i = POW then str 1 [1]: = f ^. next ; { Якщо и дорівнює кількості елементів множини, то необхідно змінити покажчик на перше подпонятіе нашого поняття, так як вже зазначалося вище, поняття, що складається тільки з простих подпонятій виводити не має треба. Але, такі поняття залишаємо для підзадач меншої розмірності, так як в комбінації з рішеннями інших підзадач, отримаємо вже поняття, що містить трохи тільки прості поняття }

While str 1 [1] <> nil do begin { поки покажчик першого подпонятія не досягне кінця списку подпонятій виконувати }

New ( pot ^. next ); { виділити пам'ять під чергове поняття }

Sum : = 0; { ця змінна служить в якості лічильника, який після наступного циклу буде містити кількість елементів у новому понятті }

K 1: = 1, { номер першого подпонятія. Перше подпонятіе має завжди, якщо можна так висловитися, В«пізніший адресаВ», або, точніше, всі подпонятія, наступне за першим, отримані раніше або одночасно з ним. Це також стосується другого подпонятіе щодо третього, четвертого і т. д. , третього щодо четвертого, п'ятого і т. д., і т. д. }

If i = pow then pot ^. next ^. s : ='' else pot ^. next ^. s : = '('; { Якщо и дорівнює кількості елементів множини, то нам не потрібні дужки на початку (їх домовилися опустити) }

While sum < i do begin { поки кількість елементів у новому понятті менше розмірності підзадачі, виконати }

{ Додати в поняття подпонятіе з номером k 1}

Sum : = sum + s...


Назад | сторінка 4 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Поняття позову і його елементів
  • Реферат на тему: Поняття механізму адміністративно-правового регулювання і його елементів
  • Реферат на тему: Поняття мови як найважливіше комунікативне якість. Поняття полісемії
  • Реферат на тему: Поняття про вимірювальних шкалах, їх види. Поняття про шкалировании
  • Реферат на тему: Поняття і види "туризму". Поняття "походу" і його клас ...