Помощь в написании студенческих работ
Антистрессовый сервис

Программа эмуляции розвитку популяцій животных

РефератПомощь в написанииУзнать стоимостьмоей работы

Write («Послід — у дитинчат. «);write («Колір виведення від 1 до 15 «); colorwind (40,10,65,19,black, green); gotoxy (6,1); txt (Yellow); write («Травоїдні «); gotoxy (2,2); write («У: «); {початкова у травоїдних} readln (g); txt (yellow); gotoxy (2,3); write («Корм: «);{у корми на рік однієї травоїдного} readln (ttt); ttt:=ttt/1000; gotoxy (2,4); write («Послід: «); {народжуваність} readln (tp… Читать ещё >

Программа эмуляции розвитку популяцій животных (реферат, курсовая, диплом, контрольная)

Інститут Перепідготовки Кадров.

Уральського Державного Технічного Университета.

Кафедра мікропроцесорної техники.

Оцінка работы.

Члени комиссии.

ПРОГРАМА ЭМУЛЯЦИИ РАЗВИТИЯ.

ПОПУЛЯЦІЙ ЖИВОТНЫХ.

Курсова работа.

Пояснювальна записка.

Руководитель.

Доцент С. С. Соколов.

Слушатель.

Група СП-913 А. А. Соколов.

ЕКАТЕРИНБУРГ.

ПОСТАНОВКА ЗАДАЧИ…;

ВВЕДЕНИЕ

…3.

1. ОСНОВНА ЧАСТЬ…4.

1. Методика взаємодії популяций…4.

2. Опис программы…5.

3. Опис бібліотеки Fauna1 …6.

4. Опис бібліотеки Mycrt …7.

5. Опис основного тіла программы…8.

2.

ЗАКЛЮЧЕНИЕ

…9.

Додаток 1. Основна программа…10.

Додаток 2. Бібліотека Fauna1…24.

Додаток 3. Бібліотека Mycrt…26.

Додаток 4. Інструкція пользователя…28.

— 3;

1.

ВВЕДЕНИЕ

.

Заради інтересу дали завдання написати програму типу «Життя », але з деякими змінами у перших условиях.

Умови були такі, що у эмуляции повинні брати участь дві популяції: хижаки і травоїдні, які взаємодіяли одна з одним шляхом поїдання травоїдних хищниками.

У процесі вироблення програми запроваджені додаткові параметры:

— Вік животных.

— Мінімальний і максимальний репродуктивний вік животных.

— Кількість їжі потрібний тваринам підтримки жизни.

— Кількість травы.

— Відсоток відновлення травы.

— Можливість природних катаклізмів які впливають популяції животных.

— 4;

2. ОСНОВНА ЧАСТЬ.

2.1 Методика взаємодії популяций.

Методика взаємодій хижака і травоїдного у тому, як і хижаки, і травоїдні представлені у вигляді точок, які пересуваються по екрану з кроком у один піксель. У цьому заданно умова, тоді як радіусі один піксель від точки що належить хижаку з’являється точка що належить травоядному, то вважається, що хижак з'їв травоядного.

Спосіб пересування точок на екрані організували за алгоритмом випадкового блукання, тобто. пересування по осях Х і Y з кроком у один піксель вибирається випадковим образом.

Мертві своїм життям травоїдні вважаються, як съевшиеся хищниками.

При недоїданні обома популяціями, особини вмирають у процесі зменшення віку, тобто. що більше вік тваринного, тим більша вірогідність загинути з голоду. Через великих проміжних розрахунків облік по недоеданию був обраний отже хижаки враховуються раз на рік, а травоїдні дванадцять разів у год.

— 5;

2.2 Опис программы.

Ця програма написана з допомогою объектно-ориентированного мови Borland Pascal 7.1 й на обробці масивів типу tosob описаної у об'єктному модулі fauna1. Цей тип має такі параметри: x — розташування з координування Х екрана y — розташування з координування Y екрана age — вік точки col — колір виведення экран.

Програма забезпечує такі операции:

— Завдання параметрів популяції травоядных.

— Завдання параметрів популяції хищников.

— Завдання параметрів оточуючої среды.

— Перегляд взаємодії тварин за графічному режиме.

— Індикація результатів щодо виходу з режиму перегляду взаємодії животных.

— Вихід із программы.

З допомогою зарезервованого слова «uses «до програми підключається стандартні бібліотечні модулі TPCRT, GRAPH, DOS і бібліотечні модулі написані программистом-разработчиком MYCRT і FAUNA1.

У розділі описи констант і змінних були объявленны такі перемінні: — gd, gm типу integer для ініціалізації графіки — q, x, y, x1, y1,t, i, j, k, at, at1, ct1,ctp типу integer від використання в тілі циклів — g, m типу integer для завдання початкового кількості тварин — v, w типу integer для завдання максимального віку тварин — ct, ch типу shortint для завдання кольору відображуваних точок — tmin, tmax, hmin, hmax, tp, hp типу integer для завдання чинників які впливають репродуктивность тварин — tt типу integer для врахування померлих і з'їдених травоїдних — kata типу integer для завдання ймовірності природних катаклізмів — ht типу integer для завдання кількості травоїдних потрібних хижаку для їжі - ttt типу real для завдання кількості трави потрібних травоядному для їжі - tr типу real для завдання відсотка відновлення кількості трави — tree, tree1 типу longint для завдання й модифікації кількості трави — z типу longint для лічильника часу — key типу boolean для відстежування натискання клавіш — s, ss типу string площею сімнадцять символів висновку на екран в графічному режимі - pal типу FillPatternType стандартна змінна бібліотеки GRAPH для зберігання типу, і кольору заливання графічних постатей об'єктів — tg масив обсягом 4400 точок типу tosob для зберігання травоїдних — hr масив обсягом 1350 точок типу tosob для зберігання хищников.

— 6;

2.3 ОПИС БІБЛІОТЕКИ FAUNA1.

У цьому бібліотеці описано два типу даних Tposition і Tosob. Тип Tposition має дві параметра: x — розташування з координування Х екрана y — розташування з координування Y екрана Задіяні функції: getx — отримання координати Х gety — отримання координати Y До того ж процедура ініціалізації об'єкта init Тип Tosob має чотири параметра: x — розташування з координування Х екрана y — розташування з координування Y екрана age — вік точки col — колір виведення екран Задіяні функції: daizwet — отримання кольору точки daiage — отримання параметра age vidnoli — отримання факту відображення на екрані процедури: blind — гасіння точки show — відображення точки init — створення об'єкта Tosob done — знищення об'єкта Tosob.

— 7;

2.4 ОПИС БІБЛІОТЕКИ MYCRT.

У цю бібліотеку включені функції і складні процедури призначені для роботи у текстовому режимі. Процедури: fon — завдання кольору фону екрана txt — завдання кольору виведених символів ramka — висновок прямокутника символами.

186,187,188,200,201,205 colorwind — висновок вікна з рамкою Функції: colword — перетворення чисел від однієї до п’ятнадцяти в рядок з найменуванням кольору mes — перетворення чисел від нуля до триста шістдесяти п’яти в рядок під назвою месяца.

— 8;

2.4 ОПИС ОСНОВНОГО ТЕЛА ПРОГРАММЫ.

Здебільшого модулі програми включені процедури: ini — висновок на екран масивів hr і tr зі стартовими параметрами tnew — рух точки що належить масиву tr з перевіркою віку hnew — рух точки що належить масиву hr з перевіркою віку trod — створення нових точок масиву tr hrod — створення нових точок масиву hr dead — процес поглинання точки масиву tr точкою масиву hr havka — процес знищення точок масиву tr залежно від значення перемінної tt tmor — процес знищення випадкового кількості точок масиву tr hmor — процес знищення випадкового кількості точок масиву hr zasux — підрахунок перемінної tree quit — вихід із програми herb — організація введення стартових значень змінних для масиву tr beast — організація введення стартових значень змінних для масиву hr env — організація введення значень змінних для завдання змінних tree, tr, kata, q info — організація інформаційного вікна gmenu — промальовування основного меню omenu — промальовування меню Option start — запуск графічного режиму і запуск основного циклу komenu — організація меню Option gkmenu — організація основного меню.

— 9;

3.

ЗАКЛЮЧЕНИЕ

.

Ця програма представляє досить грубу модель життєдіяльності і взаємодії живих організмів. Проте, навіть такий моделювання дозволяє простежити основні моменти циклу життя популяції. При можливий додаванні деяких додаткових чинників, моделювання може більше наблизитися до реального ситуації. Такими чинниками можуть бути: — Сезонні зміни клімату — «Технологія» полювання — Навколишня флора і фауна — Вплив життєдіяльності людини — Взаємодія особин всередині популяції Ця програма може бути як навчального посібника по програмування мовою Pascal.

— 10;

Додаток 1.

Основна программА.

program fauna; uses mycrt, dos, graph, fauna1, tpcrt; var q, x, y, x1, y1,gd, gm, t, i, j, k, AT, at1, ct1,ctp:integer;{общие} g, v, m, w: integer;{} ct, ch: shortint;{цвет} tmin, tmax, hmin, hmax, tp, hp: integer;{детородность} tt: integer;{трупы і съеденые травоїдні протягом року} kata, ht: integer; ttt, tr: real; z, tree, TREE1: longint; key: boolean; s, ss: string[17]; tg: array[1.4400] of tosob; {green-травоядных} hr: array[1.1350] of tosob; {red-хищников} pal: FillPatternType; {***********************************************************} procedure ini; begin for i:=1 to g do begin at:=RANDOM (v)+1; tg[i]. init ((random (630)+5); INSERT INTO `ref` (`id_predmet`, `name_predmet`, `id_ref`, `name_ref`, `text_ref`) VALUES (random (462)+18), at, ct); tg[i]. show; end; for i:=1 to m do begin at:=random (w)+1; HR[i]. init ((random (630)+5); INSERT INTO `ref` (`id_predmet`, `name_predmet`, `id_ref`, `name_ref`, `text_ref`) VALUES (random (462)+18), at, ch); hr[i]. show; end; end; {***********************************************************} procedure tnew; begin I:=0; REPEAT I:=I+1; begin x:=tg[i]. getx; y:=tg[i]. gety; AT:=TG[I]. DAIAGE; CTP:=TG[I]. DAIZWET; if (z mod 365)=0 then BEGIN at:=at+1; {Happy New Year!}.

TG[I]. INIT (X, Y, AT, CTP); END; if at>v then {Old ?} begin tg[i]. done;

— 11;

tg[i]. init (0,0,0,0); tt:=tt+1;{умершее тварина} for j:=i+1 to g do begin x1:=tg[j]. getx; y1:=tg[j]. gety; at1:=tg[j]. daiage; ct1:=tg[j]. daizwet; tg[j]. done; tg[j-1]. init (x1,y1,at1,ct1); tg[j-1]. show; end;

TG[G]. INIT (0,0,0,0);

G:=G-1;

I:=I-1;

CONTINUE; end; x:=tg[i]. getx; y:=tg[i]. gety; x:=x+(random (3)-1); y:=y+(random (3)-1); if x635 then x:=634;if y480 then y:=479; AT:=TG[I]. DAIAGE; CTP:=TG[I]. DAIZWET; tg[i]. done; IF CT0 THEN BEGIN tg[i]. init (x, y, at, CTP); tg[i]. show; END; END; UNTIL I>=G; end; {***********************************************************} procedure trod; begin if (z mod 365)=0 then {Happy New Year!} begin t:=0; for i:=1 to g do begin at:=tg[i]. daiage; if (tmin4100 then break; end; g:=g+1+x; if g>4000 then begin key:=true; end; end else begin end; end; end; {***********************************************************} procedure hnew; begin I:=0; REPEAT I:=I+1; begin x:=hr[i]. getx; y:=hr[i]. gety; At:=hr[I]. DAIAGE; CTp:=hr[I]. DAIZWET; if (z mod 365)=0 then BEGIN at:=at+1; {Happy New Year!} hr[I]. INIT (X, Y, At, CTp); END; if at>w then {Old ?} begin hr[i]. done; hr[i]. init (0,0,0,0); for j:=i+1 to m do begin x1:=hr[j]. getx; y1:=hr[j]. gety; at1:=hr[j]. daiage; ct1:=hr[j]. daizwet; hr[j]. done; hr[j-1]. init (x1,y1,at1,ct1); hr[j-1]. show; end; hr[m]. INIT (0,0,0,0); m:=m-1;

I:=I-1;

CONTINUE; end; x:=hr[i]. getx; y:=hr[i]. gety; x:=x+(random (3)-1); y:=y+(random (3)-1); if x635 then x:=634;if y480 then y:=479; AT:=hr[I]. DAIAGE; CTp:=hr[I]. DAIZWET; hr[i]. done; IF CTp0 THEN BEGIN hr[i]. init (x, y, at, CTp); hr[i]. show; END; END; UNTIL I>=m; end; {**********************************************************} procedure hrod; begin if (z mod 365)=0 then {Happy New Year!} begin t:=0; for i:=1 to m do begin at:=hr[i]. daiage; if (hmin1000) or (m=g;

TG[G]. INIT (0,0,0,0);

G:=G-1; j:=j-1; end else begin end; until j>=g; end; end; {**********************************************************} procedure havka; begin if ((z mod 365)=0) and (tt>0) then begin x1:=(tt divx ht);{сколько прокормилось нинішнього року} j:=0; y1:=w;{max vozrast} if x1=0 then begin for i:=1 to m do begin hr[i]. init (0,0,0,0); hr[i]. done; end; end; if (x10 then begin repeat j:=random (m)+1; hr[j]. done; hr[j]. init (0,0,0,0); for i:=j+1 to m do begin x1:=hr[i]. getx; y1:=hr[i]. gety; at1:=hr[i]. daiage; ct1:=hr[i]. daizwet; hr[i]. done; hr[i-1]. init (x1,y1,at1,ct1); hr[i-1]. show; end; hr[m]. done; hr[m]. init (0,0,0,0); m:=m-1; until m=y; end; end; {***********************************************************} procedure zasux;{засуха} begin tree:=tree — random (round (tree/10)); end; {***********************************************************} procedure quit; begin window (1,1,80,25); fon (black); clrscr; GOTOXY (1,24); txt (White); WRITELN («————————————————————————-;

—————————————— «); txt (yellow); WRITELN («Antony Sokolov | FidoNet 2:5078/20.4 AKA.

2:5078/20.666 AKA 2:5078/22.666 "); txt (White); WRITELN («————————————————————————-;

—————————————— «); end; {***********************************************************} procedure herb;{травоядные} begin colorwind (3,20,77,25,black, yellow); gotoxy (32,1); writeln («Правила введення для травоїдних »); gotoxy (2,2);write («У травоїдних трохи більше 3000. »); write («Корм озер місяцем в кілограмах. »);gotoxy (2,3);

— 17;

write («Послід — у дитинчат. »);write («Колір виведення від 1 до 15 »); colorwind (40,10,65,19,black, green); gotoxy (6,1); txt (Yellow); write («Травоїдні «); gotoxy (2,2); write («У: »); {початкова у травоїдних} readln (g); txt (yellow); gotoxy (2,3); write («Корм: »);{у корми на рік однієї травоїдного} readln (ttt); ttt:=ttt/1000; gotoxy (2,4); write («Послід: »); {народжуваність} readln (tp); gotoxy (2,5); write («Min дітородний: »); read (tmin); gotoxy (2,6); write («Max дітородний: »); read (tmax); gotoxy (2,7); write («Max возрaст: »); read (v); gotoxy (2,8); write («Колір виведення: »); read (ct); colorwind (3,20,77,25,black, black); end; {***********************************************************} procedure beast; {хижаки} begin colorwind (3,20,77,25,black, yellow); gotoxy (32,1); writeln («Правила введення для хижаків »); gotoxy (2,2);write («У хижаків трохи більше 1000. »); write («Корм — у травоїдних на рік. »);gotoxy (2,3); write («Послід — у дитинчат. »);write («Колір виведення від 1 до 15 »); colorwind (40,10,65,19,black, red); gotoxy (8,1); txt (Yellow); write («Хижаки »); gotoxy (2,2); txt (yellow); write («У: »); readln (m); gotoxy (2,3); write («Корм: »);{початкова у хижаків} readln (ht); gotoxy (2,4); write («Послід: »);{рождаемость}.

— 18;

readln (hp); gotoxy (2,5); write («Min дітородний: »); {природна смертність} read (hmin); gotoxy (2,6); write («Max дітородний: »); {природна смертність} read (hmax); gotoxy (2,7); write («Max вік: »); {природна смертність} read (w); gotoxy (2,8); write («Колір виведення: »); read (ch); colorwind (3,20,77,25,black, black); end; {***********************************************************} procedure env; {середовище проживання} begin colorwind (3,20,77,25,black, yellow); gotoxy (32,1); writeln («Правила введення для середовища »); gotoxy (2,2);write («У трави щонайменше 1000. »); write («Відсоток відновлення будь-який. »);gotoxy (2,3); write («Катастрофи: 0 чи 1 — немає, 2 і более-есть. »); gotoxy (2,4); write («Затримка повідомлень в мс. Рекомендується не менее.

1000 "); colorwind (40,10,75,17,black, Magenta); gotoxy (13,1); txt (Yellow); write («Середовище проживання »); gotoxy (2,2); txt (yellow); write («У трави: »);{У востанавливаемой їжі для травоїдних на рік} readln (tree); gotoxy (2,3); write («Відсоток відновлення: »); readln (tr); gotoxy (2,4); write («Наявність катастроф: »); readln (kata); gotoxy (2,5); write («Затримка повідомлень: »); readln (q); colorwind (3,20,77,25,black, black); end; {***********************************************************} procedure info; begin fon (15); colorwind (1,4,70,16,black, Lightblue); txt (Green); gotoxy (2,2);write («Травоїдних- «, g, «Хижаків- «, m); str (ttt:1:2,s);

— 19;

gotoxy (2,3); write (s, «т. їхні «, ht, «туш потрібно на прокорм тварин »); gotoxy (2,4); write («Max вік травоїдних », v, «, хижаків », w); gotoxy (2,5); write («Дітородний вік травоїдних від », tmin, «до », tmax); gotoxy (2,6); write («Дітородний вік хижаків від », hmin, «до », hmax); gotoxy (2,7); write («Послід травоїдних до », tp, «, хижаків до », hp); gotoxy (2,8);write («Трави », tree, «тонн »); str (tr:1:2,s); gotoxy (2,9);write («Приріст трави за кожен місяць », p. s, «% »); if (kata=0) or (kata=1) then p. s:= «відсутня «else p. s:= «присутній »; gotoxy (2,10);write («Можливість катаклізмів », p. s); s:=colword (ct); gotoxy (2,11);write («Колір травоїдних », p. s); s:=colword (ch); write («Колір хижаків », p. s); end; {***********************************************************} procedure Gmenu; begin fon (black); clrscr; colorwind (1,1,80,4,black, darkgray); txt (14); gotoxy (5,2); write («P.S »); txt (white); write («tart »); txt (yellow); write («O »); txt (white); write («ption »); txt (yellow); write («Q »); txt (white); write («uit »); END; {***********************************************************} PROCEDURE Omenu; begin colorwind (45,3,62,8,black, darkgray); hiddencursor; txt (14); gotoxy (2,2); write («H »); txt (white); writeln («erbivorous »); txt (yellow); gotoxy (2,3); write («B »); txt (white);

— 20;

writeln («east of prey »); txt (yellow); gotoxy (2,4); write («E »); txt (white); write («nvironment »); end; {***********************************************************} procedure start; begin randomize; gD := Detect; InitGraph (gD, gM, «»); setfillpattern (pal, black); z:=0;{начало ери} tt:=0; {трупи і з'їдені} ini; repeat key:=false; z:=z+1; if ((z mod 365)=0) or ((z mod 365)=31) or ((z mod 365)=59) or ((z mod 365)=90) or ((z mod 365)=120) or ((z mod 365)=151) or ((z mod 365)=181) or ((z mod 365)=212) or ((z mod 365)=242) or ((z mod 365)=273) or ((z mod 365)=303) or ((z mod 365)=334) then begin tree:=round (tree-g*ttt);{съели протягом місяця} tree:=tree+round (tree*(tr/100));{прирост трави на місяць} x:=round (tree*ttt);{травоядные від недоїдання} if tree0 then begin dead;{хищники їдять травоїдних} hnew;{естественная смертність хижаків} havka;{хищники від недоїдання} hrod;{рождение хижаків} end; if ((z mod 365)=180)and (g>0)and (m>0) then begin if random (kata)0 then begin x:=random (4); if x=0 then begin x:=random (round (g/50))+5; moveto (320,240);setcolor (Lightred);str (x, s);

Outtext («Хвороба травоїдних забрала »);

Outtext (s);Outtext («життів »); tmor; end; if x=1 then begin x:=random (round (m/40))+1; moveto (320,240);setcolor (Lightred);str (x, s);

Outtext («Хвороба хижаків забрала »);

Outtext (s);Outtext («життів »); hmor; end; if x=2 then begin zasux; moveto (320,240);setcolor (Lightred); str (tree1,s);Outtext («Засуха! Загублено »);

Outtext (s);Outtext («тонн трави »); delay (q); end; if x=3 then begin x:=random (round (g/50))+5; moveto (0,240);setcolor (Lightred);str (x, s);

Outtext («Повінь згубило »);Outtext (s);Outtext («травоїдних, «); tmor; x:=random (round (m/40))+1; str (x, s);Outtext (s);Outtext («хижаків, «); hmor; zasux; str (tree1,s);Outtext (s);Outtext («тонн трави »);

— 22;

delay (q); end; delay (q); bar (0,240,640,260); end; end; if g>0 then trod;{рождение травоїдних} if g>4000 then break; if keypressed then key:=true; if (g>4000) or (g0)and (m>0)and (ttt>0)and (tp>0)and (tmin>0)and (tmax>0) and (ct>0)and (ht>0)and (hp>0)and (hmin>0)and (hmax>0)and.

(Ch>0)and (tree>0)and (tr>0)and (kata>0)then begin start; gmenu; info; key1:=false; end; end; if (key2= «o »)or (key2= «O ») then begin.

Omenu; komenu;

GMENU; info; key1:=false; end; if (key2= «q ») or (key2= «Q »)or (key2=#27) then begin key1:=true; quit; end; until key1=true; end; {***********************************************************} {Body program} begin g:=1200;{травоядные у} v:=30;{возраст травоїдного} m:=200;{хищники у} w:=25;{возраст хижака} ct:=yellow;ch:=red; tmin:=2;tmax:=28; hmin:=3;hmax:=24; tp:=3;hp:=7;{детородность} kata:=9; ht:=3; ttt:=1; tree:=1300; tr:=15.1; hiddencursor; GKMENU; end.

— 24;

Додаток 2.

Бібліотека Fauna1.

{Init object} unit fauna1; interface uses graph; Type TPosition=object x, y: integer; procedure Init (x0,y0: integer); function getx: integer; function gety: integer; end; type Tosob=object (TPosition) color: word; vidno: boolean;

AGE: INTEGER; constructor Init (x0,y0,age0:integer;col:word); destructor Done; virtual; procedure Show; virtual; procedure Blind; virtual; function Daizwet: word; function VidnoLi: boolean;

FUNCTION DAIAGE: INTEGER; end; Posob=^Tosob; {metod Tposition} Implementation Procedure Tposition. Init (x0,y0:integer); Begin x:=x0; y:=y0; End; Function Tposition. Getx:integer; Begin GetX:=x End; Function Tposition. Gety:integer; Begin Gety:=y End; Constructor Tosob. Init (x0,y0,age0:integer;col:word); Begin.

Tposition.Init (x0,y0);

AGE:=AGE0; color:=col; vidno:=false; End; Destructor Tosob. Done; Begin.

Tosob.blind; End; procedure Tosob. Show; Begin putpixel (TPosition.GetX, TPosition. GetY, color); vidno:=True; End; procedure Tosob. Blind;

— 25;

Begin putpixel (TPosition.GetX, TPosition. GetY, GetBKColor); vidno:=False; End; Function Tosob. Daizwet: word; Begin Daizwet:=color End; Function Tosob. VidnoLi: Boolean; Begin VidnoLi:=Vidno End; FUNCTION TOSOB. DAIAGE:INTEGER; BEGIN DAIAGE:=AGE END; End.

— 26;

Додаток 3.

Бібліотека Mycrt.

unit Mycrt;

interface uses tpcrt, dos; procedure fon (x:byte); procedure txt (col:byte); procedure ramka (x1,y1,x2,y2:integer); procedure colorwind (v1,v2,v3,v4,fon, text: byte); FUNCTION COLWORD (COL:BYTE):STRING; function mes (z:longint):string; implementation {***********************************************************} function mes; var col: string; x: integer; begin x:=z mod 365; if (x>=0)and (x=31)and (x=59)and (x=90)and (x=120)and (x=151)and (x=181)and (x=212)and (x=242)and (x=273)and (x=304)and (x=336)and (x.

Показать весь текст
Заполнить форму текущей работой