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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy