Skip to content

πŸŽ“ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘ΠΈ, 2 ΠΈ 3 сСмСстры, BMSTU, IU7(2017)

License

Notifications You must be signed in to change notification settings

zakolm/Cprogramming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

"ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘ΠΈ" 2 ΠΈ 3 сСмСстры, BMSTU(Bauman Moscow), IU7, 2017

АвтопСрСнос ΠΈΠ· GitLab(ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹), Ссли Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚Ρ‹- ΠΎΡ‚ΠΏΠΈΡˆΠΈΡ‚Π΅

ΠŸΠ•Π Π’ΠΠ― ЧАБВЬ.

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 1.



Π—Π°Π΄Π°Ρ‡Π° 1

Π”Π°Π½Ρ‹ основания Ρ€Π°Π²Π½ΠΎΠ±Π΅Π΄Ρ€Π΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ ΠΈ ΡƒΠ³ΠΎΠ» ΠΏΡ€ΠΈ большСм основании. Найти ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ.

Π—Π°Π΄Π°Ρ‡Π° 2

include studio.h
main{}
(
int s;
s: = 56;
print (Year has s weeks)
)

Π—Π°Π΄Π°Ρ‡Π° 3

БмСшано v1 Π»ΠΈΡ‚Ρ€ΠΎΠ² Π²ΠΎΠ΄Ρ‹ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ t1 с v2 Π»ΠΈΡ‚Ρ€Π°ΠΌΠΈ Π²ΠΎΠ΄Ρ‹ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ t2. Найти объСм ΠΈ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π²ΡˆΠ΅ΠΉΡΡ смСси.

Π—Π°Π΄Π°Ρ‡Π° 4

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ подъСзда ΠΈ этаТа ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ дСвятиэтаТного Π΄ΠΎΠΌΠ°, считая, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этаТС Ρ€ΠΎΠ²Π½ΠΎ 4 ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹, Π° нумСрация ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€ начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ подъСзда



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 2.



Π—Π°Π΄Π°Ρ‡Π° 1

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ опрСдСляСтся Ρ‚Π°ΠΊ:
F0 = 0, F1 = 1, Fk = Fk-1 + Fk-2 ΠΏΡ€ΠΈ k >= 2.
Π”Π°Π½ΠΎ n, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Fn.

Π—Π°Π΄Π°Ρ‡Π° 2

Π”Π°Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ своих Π²Π΅Ρ€ΡˆΠΈΠ½. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»Π΅ΠΆΠΈΡ‚ Π»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ, Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΈΠ»ΠΈ Π²Π½Π΅ этого Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°

Π—Π°Π΄Π°Ρ‡Π° 3

Вычислит с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ eps:

  • ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ s(x);
  • Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(x);
  • Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΡƒΡŽ |f(x)-s(x)| ΠΈ |f(x)-s(x)|/|f(x)| ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ошибки ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ значСния.

s(x) = x + x3/(23) + 3x5/(245) + 35x7/(2467) + 357x9/(24689) + ...
|x| < 1, f(x) = arcsin(x)

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° gcov

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° gcov ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ (Π² Ρ‚ΠΎΠΌ числС) для Π°Π½Π°Π»ΠΈΠ·Π° покрытия ΠΊΠΎΠ΄Π° тСстами. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, которая получаСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, позволяСт ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

  • ΠΊΠ°ΠΊ часто выполняСтся каТдая строка ΠΊΠΎΠ΄Π°;
  • ΠΊΠ°ΠΊΠΈΠ΅ строки ΠΊΠΎΠ΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ;
  • ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ строк ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ тСстами (для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°);
  • ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ тСстами (для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°).

gcov ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компилятора gcc. ΠŸΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π° Β«-O0Β» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ Β«-fprofile-arcsΒ» ΠΈ Β«-ftest-coverageΒ».

Π”Π²Π° послСдних ΠΊΠ»ΡŽΡ‡Π° Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ компилятор Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² исполняСмый Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎ врСмя Π΅Π΅ выполнСния собираСт ΡΡ‚Π°Ρ‚ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ сохраняСтся Π΅Π΅ Π² слуТСбныС Ρ„Π°ΠΉΠ»Ρ‹. gcov ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти Ρ„Π°ΠΉΠ»Ρ‹ для создания Β«Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎΒ» листинга исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ частотС выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки.



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 3.



Π—Π°Π΄Π°Ρ‡Π° 1

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π° чисСл Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Ctrl-Z ΠΈ Enter ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π±ΡƒΠΊΠ²Ρƒ.

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ количСство Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… максимумов Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ называСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ максимумом, Ссли ΠΎΠ½ строго большС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ максимумами.);

ВрСбования ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ:

- ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
int process(FILE *f [, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹]);
  • Ѐункция process Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ошибки Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -1 – Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚ ΠΈ Ρ‚.Π΄.). Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ошибки задаСтся мнСмоничСскоС имя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ define.
  • ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ любой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° 1 Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° Π²Π²ΠΎΠ΄Π° ΠΈ массивы Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  • НСобходимо ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ тСстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ классам эквивалСнтности. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅.

Π—Π°Π΄Π°Ρ‡Π° 2

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая считываСт ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π° вСщСствСнныС числа ΠΈ выполняСт Π½Π°Π΄ Π½ΠΈΠΌΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вычислСния:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ выполняСтся Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Β«Ρ‚Ρ€Π΅Ρ… сигм» для чисСл;

ВрСбования ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ:

- ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
- ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ массивы Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
- Имя Ρ„Π°ΠΉΠ»Π° бСрСтся ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.
- ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок.
- РСшСниС любой ΠΈΠ· этих Π·Π°Π΄Π°Ρ‡ выполняСтся ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π·Π° Π΄Π²Π° просмотра Ρ„Π°ΠΉΠ»Π°.
- ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ тСстовыС Π΄Π°Π½Π½Ρ‹Π΅, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.




Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 4.



ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ элСмСнты цСлочислСнного статичСского массива ΠΈ выполняСт Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. МаксимальноС количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ€Π°Π²Π½ΠΎ 10.

Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для:

- нахоТдСния суммы Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΈ произвСдСния Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… элСмСнтов массива;
- пСрСзаписи Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив всСх элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС срСднСго арифмСтичСского элСмСнтов исходного массива;
- удалСния ΠΈΠ· массива всСх ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов;
- добавлСния послС элСмСнтов, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ числу (вводится ΠΏΠΎ запросу), суммы элСмСнтов, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΅ΠΌΡƒ;
- ΠΎΠ±ΠΌΠ΅Π½Π° Π² массивС максимального элСмСнта срСди Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΈ минимального элСмСнта срСди Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…;
- записи Π½Π° мСсто максимального элСмСнта, ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ 3, суммы элСмСнтов, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° 3;
- упорядочивания элСмСнтов, располоТСнных ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтами массива (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ эти элСмСнты).



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 5.



ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая считываСт ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π° Ρ†Π΅Π»Ρ‹Π΅ числа Π² статичСский массив ΠΈ Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ min(x[0]*x[1], x[1]*x[2],x[2]*x[3], ..., x[n-3]*x[n-2], x[n-2]*x[n-1]).
Π“Π΄Π΅ x[i] - элСмСнты массива x ΠΈΠ· n элСмСнтов.

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ статичСского массива – 100 элСмСнтов. ΠŸΡ€ΠΈ считывании элСмСнтов массива ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ пСрСполнСния массива. Если Π² Ρ„Π°ΠΉΠ»Π΅ содСрТится большС 100 элСмСнтов, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ считанныС 100 элСмСнтов. Π‘ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΠΈΡΡ элСмСнтами ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π°.

Имя Ρ„Π°ΠΉΠ»Π° пСрСдаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 6.



НСобходимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° основС 5-ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡŽΡ‚ΡΡ с использованиСм "include guard". ДопущСния (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ), сдСланныС ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ основной Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассказывался Π½Π° послСднСм сСминарС ΠΏΠΎ ОПИ (Π² moodle Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€).

Для сборки ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make. Оба ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (основной ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты) ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ с ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Π½Π΅Π΅. Запуск ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов ΠΈΠ· make-Ρ„Π°ΠΉΠ»Π° сразу послС сборки тСстов оцСниваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Qt Creator организуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ написанного (ΠΈΠ»ΠΈ написанных) make-Ρ„Π°ΠΉΠ»Π° (Ρ„Π°ΠΉΠ»ΠΎΠ²).



Π’Π’ΠžΠ ΠΠ― ЧАБВЬ.

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 7.



ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая упорядочиваСт (сортируСт) массив.

Π”Π°Π½Π½Ρ‹Π΅ Π² массив ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π°. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² Ρ„Π°ΠΉΠ»Π΅ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ массив выдСляСтся динамичСски. Число элСмСнтов Π² массивС опрСдСляСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΏΠΎ тСкстовому Ρ„Π°ΠΉΠ»Ρƒ, Π²ΠΎ врСмя Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° числа ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² массив.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ послС сортировки массив записываСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ».

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой элСмСнты массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

Ѐункция-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • опрСдСляСт количСство элСмСнтов массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ;
  • выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство элСмСнтов;
  • ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΈΠ· старого массива Π² Π½ΠΎΠ²Ρ‹ΠΉ.

Ѐункция-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ:


int key(const int *pb_src, const int *pe_src, int **pb_dst, int **pe_dst);



Ѐункция сортировки рСализуСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ (Ρ‚.Π΅. ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ qsort ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (stdlib.h)) ΠΈ называСтся mysort.

ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ) ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ запуска прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:


app.exe in_file out_file [f]

Для всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты (ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚).

ΠŸΡ€ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Dr. Memory, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ± отсутствии ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ Dr. Memory ΠΏΠΎΠ΄ вСрсионный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΈ qsort. ΠŸΠΎΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΠ³Π΄Π° ваша рСализация Π»ΡƒΡ‡ΡˆΠ΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² (рисунки Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PNG, оси подписаны). Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Wiki Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ страницС. Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ срСдствами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Excel).



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 8.



ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, которая Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ слоТСниС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ вычислСниС опрСдСлитСля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ разлоТСния ΠΏΠΎ строкС.

ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ выдСляСтся динамичСски 2 ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ:

double **data = calloc(n, sizeof(double*));
if (!data)
return NULL;

for (int i = 0; i < n; i++)
{
data[i] = malloc(m * sizeof(double));
}



Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ». Один Ρ„Π°ΠΉΠ» содСрТит ΠΎΠ΄Π½Ρƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк ΠΈ столбцов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ указываСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строчкС Ρ„Π°ΠΉΠ»Π°

ВСстированиС выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сравнСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ. ΠŸΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ вСщСствСнныС числа Π½Π° равСнство ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ выполняСмая опСрация указываСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ запуска прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:


 app.exe action mtr_1.txt [mtr_2.txt] res.txt 



Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния action:

  • a слоТСниС;
  • m ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅;
  • o опСрация ΠΏΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ (для Π½Π΅Π΅ mtr_2.txt Π½Π΅ указываСтся).



Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 9.



Π—Π°Π΄Π°Ρ‡Π° 1

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ строковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. 1. strpbrk 2. strspn 3. strcspn 4. strchr 5. strrchr 6. strdup 7. strndup

ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с прСфикса β€œmy_” (Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strpbrk, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ my_strpbrk).

Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов ΠΊ Π½ΠΈΠΌ(Ρ‚.Π΅. Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ функциями ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ). ΠŸΡ€ΠΈ этом Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстах Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ) своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ стандартной.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ 1
Ѐункция strdup становится доступной Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ стандарта gnu99 (Ρ‚.Π΅. –std=gnu99).
Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ 2
Ѐункция strndup Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ компилятора MinGW Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°. Для Π΅Π΅ тСстирования ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты, сравнСниС с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ выполняСтся.
Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ 3.
Для компилятора gcc ΠΈΠ· MSYS2 Β«Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ 2Β» Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ»ΠΎΡΡŒ

Π—Π°Π΄Π°Ρ‡Π° 2

НСобходимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
  • ЧтСния строки ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π°. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (Ρ‚.Π΅. Π΄ΠΎ символа EOL ΠΈΠ»ΠΈ EOF) Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
ssize_t getline(char **lineptr, size_t *n, FILE *stream);

Π˜Π›Π˜

ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream);



Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ запрСщаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ посимвольноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. ВмСсто этого, слСдуСт завСсти статичСский ΠΈΠ»ΠΈ динамичСский Π±ΡƒΡ„Π΅Ρ€ нСбольшого (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 128 Π±Π°ΠΉΡ‚) Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π² этот Π±ΡƒΡ„Π΅Ρ€ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fgets, Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ realloc.

ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с прСфикса β€œmy_”

  • Π—Π°ΠΌΠ΅Π½Ρ‹ Π² строкС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ нСпустой подстроки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ подстроку ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΡΡ‚ΡƒΡŽ). ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку выдСляСтся динамичСски.
char* str_replace(const char *source, const char *serach, const char *replace);



Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρƒ всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ подстроки Π½Π° Π·Π°Π΄Π°Π½Π½ΡƒΡŽ. Π’ Ρ„Π°ΠΉΠ»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС строки. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€
Π’ строкС "aaaa" замСняСм подстроку "aa" Π½Π° "bbb". ПослС Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ "bbbbbb".
ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.
app.exe in.txt out.txt –s search –r replace




Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 10.



Π—Π°Π΄Π°Ρ‡ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом списка

НСобходимо Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

- ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ поиска элСмСнта Π² спискС (Π½ΡƒΠΆΠ½Π° функция сравнСния элСмСнтов). (1)
node_t* find(node_t *head, const void *data, int (*comparator)(const void*, const void *));
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pop_front, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располоТСн Π² "Π³ΠΎΠ»ΠΎΠ²Π΅" списка. ΠŸΡ€ΠΈ этом ΠΈΠ· списка сам элСмСнт удаляСтся. (1)

void* pop_front(node_t **head);
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pop_end, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располоТСн Π² "хвостС" списка. ΠŸΡ€ΠΈ этом ΠΈΠ· списка сам элСмСнт удаляСтся. (1)

void* pop_back(node_t **head);
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ insert, которая вставляСт элСмСнт ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ элСмСнтом списка (Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ адрСса ΠΎΠ±ΠΎΠΈΡ… элСмСнтов). (2)

void insert(node_t **head, node_t *elem, node_t *before);



Π—Π°Π΄Π°Ρ‡ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ†Π΅Π»Ρ‹ΠΌ списком

НСобходимо Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π»ΡŽΠ±ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

- ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ copy, которая ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ списку создаСт Π΅Π³ΠΎ копию (Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ). (1)
int copy(node_t *head, node_t **new_head);
// функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ошибки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ append, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° списка Π° ΠΈ b, добавляСт список b Π² ΠΊΠΎΠ½Π΅Ρ† a. Бписок b ΠΏΡ€ΠΈ этом оказываСтся пустым. (1)

void append(node_t **head_a, node_t **head_b);
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ remove_duplicates, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ упорядочСнный список ΠΈ оставляСт Π² Π½Π΅ΠΌ лишь ΠΏΠ΅Ρ€Π²Ρ‹Π΅ вхоТдСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния элСмСнтов. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнта списка Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ. (2)

void remove_duplicates(node_t **head);
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ reverse, которая ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ список. ИдСи Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: o ИспользованиС pop_front ΠΈ Π΄Π²ΡƒΡ… списков. (1) o ИспользованиС 3-Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° сосСдниС элСмСнты списка. (2) o РСкурсия. (2)

node_t* reverse(node_t *head);
// возвращаСтся «новая» Π³ΠΎΠ»ΠΎΠ²Π°



Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° списка

node_t* sort(node_t *head, int (*comparator)(const void *, const void *));
// возвращаСтся «новая» Π³ΠΎΠ»ΠΎΠ²Π°

НСобходимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… сортировок.

- Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставками

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sorted_insert, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ упорядочСнный список, ΠΈ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² этот список, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ упорядочСнности.

void sorted_insert(node_t **head, node_t *element);

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sort, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список ΠΈ упорядочиваСт Π΅Π³ΠΎ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sorted_insert. (3)

  • Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слияниСм

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ front_back_split, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список ΠΈ Π΄Π΅Π»ΠΈΡ‚ Π΅Π³ΠΎ Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹. Если Π² спискС Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число элСмСнтов, "сСрСдинный" элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ.

void front_back_split(node_t* head, node_t** back);

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sorted_merge, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° упорядочСнных списка ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½.

node_t* sorted_merge(node_t **head_a, node_t **head_b);
// Бписки становятся пустыми, элСмСнты ΠΈΠ· Π½ΠΈΡ… «пСрСходят» Π² уорядочСнный

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ front_back_split ΠΈ sorted_merge Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sort, которая Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ рСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки слияниСм. (4)

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 11.



ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ – приобрСсти Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ знания ΠΈ умСния:

  1. Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠΌ va_list.

  2. Π Π°Π±ΠΎΡ‚Π° со строками.

  3. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ чисСл ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ систСмы счислСния Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

  4. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ объСма

ΠžΠ±Ρ‰Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

  1. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ располагаСтся Π² Π²Π΅Ρ‚ΠΊΠ΅ lab_11. Π’ этой Π²Π΅Ρ‚ΠΊΠ΅ создаСтся ΠΏΠ°ΠΏΠΊΠ° lab_11, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располагаСтся исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

  2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ спСцификаторы (см. условиС Π·Π°Π΄Π°Ρ‡ΠΈ) ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ format.txt Π² Π²ΠΈΠ΄Π΅ строки Β«d hx sΒ» (ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ).

  3. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ оформлСния исходного ΠΊΠΎΠ΄Π°.

  4. РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ оформляСтся ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

  5. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ) своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ стандартной.

  6. ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° тСорСтичСскиС вопросы, связанныС с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, приводятся Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅. ΠžΡ‚Π²Π΅Ρ‚Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ «своими словами», ΠΏΡ€ΠΈ этом запрСщаСтся любоС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ. Вопросы Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ (ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΎΠ»Π΅Π½ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство вопросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‚Ρ€Π΅Ρ…). Для написания ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ wiki Π² GitLab.

УсловиС Π·Π°Π΄Π°Ρ‡ΠΈ
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ snprintf, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ спСцификаторы Ρ‚ΠΈΠΏΠ°. Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ my_snprintf. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ запрСщаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ спСцификаторы (%c, %d, %i, %x, %o, %s) ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (l ΠΈ h) Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π‘ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π°Π½Π³Π».): http://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° 12.



ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ – приобрСсти Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (созданиС ΠΈ использованиС) со статичСскими ΠΈ динамичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ знания ΠΈ умСния:

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйса, Π΅Π³ΠΎ рСализация, сборка статичСской ΠΈ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

  2. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ).

  3. Грамотная Ρ€Π°Π±ΠΎΡ‚Π° с рСсурсами (динамичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ„Π°ΠΉΠ»Ρ‹, описатСли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ).

ΠžΠ±Ρ‰Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

  1. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ располагаСтся Π² Π²Π΅Ρ‚ΠΊΠ΅ lab_12. Π’ этой Π²Π΅Ρ‚ΠΊΠ΅ создаСтся ΠΏΠ°ΠΏΠΊΠ° lab_12_1_X (Π³Π΄Π΅ X – Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располагаСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ ΠΏΠ°ΠΏΠΊΠ° lab_12_2_Y (Π³Π΄Π΅ Y – Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ) – для исходного ΠΊΠΎΠ΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

  2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ оформлСния исходного ΠΊΠΎΠ΄Π°.

  3. РСшСниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ оформляСтся ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ make. Π’ make-Ρ„Π°ΠΉΠ»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ для сборки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

  4. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты.

  5. ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° тСорСтичСскиС вопросы, связанныС с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, приводятся Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅. ΠžΡ‚Π²Π΅Ρ‚Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ «своими словами», ΠΏΡ€ΠΈ этом запрСщаСтся любоС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ. Вопросы Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ (ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΎΠ»Π΅Π½ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство вопросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‚Ρ€Π΅Ρ…). Для написания ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ wiki Π² GitLab.

2. Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

Π—Π°Π΄Π°Ρ‡Π° 1

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ 7 с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ вынСсти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Для динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ придСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти выполняла Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ сторона.

Π—Π°Π΄Π°Ρ‡Π° 2

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π―Π·Ρ‹ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ – Π‘ΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² скриптС Π½Π° Python. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π½Π° Π‘ΠΈ ΠΈ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ctypes.
НаписаниС модуля Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ написан, Ρ‚ΠΎ это оцСниваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1
  1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ цикличСского сдвига массива Π½Π° k ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π²Π»Π΅Π²ΠΎ.

  2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°ΠΌΠΈ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2
  1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ заполнСния массива числами Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ.

  2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ массив ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3
  1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ заполнСния массива простыми числами.

  2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая пСрСписываСт элСмСнты ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, добавляя послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ элСмСнта ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число.

About

πŸŽ“ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘ΠΈ, 2 ΠΈ 3 сСмСстры, BMSTU, IU7(2017)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published