Jump to content

Задачи - УПП, Седмица 13, 12.01.2024

GitHub classroom: classroom.github.com/a/bgiFD6SB

Алтернативни задачи

Считайте задачите от семинара и тези от миналия път като част от днешните задачи. Тоест, за хората които се затрудняват повечко, решете ги и след това се върнете тук. Разбира се, ще помагам и с тях.

1 задача

От входа получавате число N, това е броя на "пробни" думи. След тях получавате още една дума, която е желаната дума. Трябва да изкарате коя пробна дума е най-близка до (различава се с най-малко знаци с) желаната дума.

Всяка дума е на нов ред и е съставена от малки латински букви. Ако има няколко думи с еднаква "близкост", изкарайте последната от тях.

Примери:

Вход Изход
5
cate
cot
dog
cote
co
cat
cot
4
nask
nmaskl
msdal
task
mask
task

2 задача

В началото получавате неотрицателно цяло число N. След това получавате N на брой редове. Всеки ред е във формата "(Име) (Фамилия) (Брой продадени продукти)".

Редовете са разбъркани, изкарайте първо име и фамилия на хората с най-много продадени продукти. Ако има няколко хора, които са продали най-много продукти, изкарайте имената им в азбучен ред, първо по фамилия, после по име.

Използвайте само една функция за сортиране! Като подсказка, използвайте указатели към функции за да променяте как тя работи.

questionКакво свойство трябва да е изпълнено за сортиращата функция?

Примери:

Вход Изход
Antony Garcia 10
John Doe 9
Joseph Carmichael 10
Steven Wayne 1
Bob Carmichael 10
Holy Wilson 9
Bob Carmichael
Joseph Carmichael
Antony Garcia

3 задача

Ще дефинираме обвито изречение, като редица от букви, за които са изпълнени следните правила:

От входа получавате N и M, те съответстват на матрица от символи с N реда и M колони. В матрицата имате обвити изречения, подредени по такъв начин, че между съседни има със сигурност поне една шпация (която действа като разделител). Допускаме, че при "двусмислици" възможно най-много шпации са част от изречението (а не от разделителя), тоест ако имаме:

A  B
.  .

тогава двете ни изречения са:

B.
A .

Изкарайте на конзолата всички обвити изречения в матрицата (редът им няма значение).

Примери:

Вход Изход
7 13
Thi A Someth
s i n ing.
s c .
ool
.   Good Hel
     luc lo.
Ha. k.
Something.
An.
This is cool.
Hello.
Good luck.
Ha.
2 7
B   A.
.
A.
B  .
3 7
    A.
B
.
A.
B  .
4 7
    A.

B
.

A.
B     .
3 6
Big
jumper
.
Big   jumper.

4 задача

В префиксния (или полския) запис слагаме оператора за смятане пред (в ляво от) елементите върху които работи (нормален запис - 1 + 2, полски запис - + 1 2). Ще разглеждаме "многоредови" изрази в полски запис, тоест изрази в които има няколко реда от целочислени стойности, така че трябва да се изчислят няколко израза с еднаква "форма", но различни стойности.

Един такъв израз изглежда така:

+ 1 2
  3 4
  5 6 .

Точката на края на последния ред задава край на израза. В този пример ще изчислим 1 + 2, 3 + 4 и 5 + 6, тоест ще "върне" три стойности: 3, 7 и 11. Всяка колона в израза е от един и същи "тип", тоест в една колона винаги ще има числова стойност или някакъв знак. С изключение на точката, всеки знак може да се постави на произволен ред (обаче в една колона не може да има повече от един знак).

Примерно:

  1 - 2   2 63
+ 3   4   7 7
  5   6 * 8 9 .

Това ще изчисли 1 + (2 - 2 * 63), 3 + (4 - 7* 7) и 5 + (6 - 8 * 9). Израза би направил същото нещо ако примерно всички знаци бяха на първия ред или на последния.

От входа получавате няколко такива израза, докато не получите знака $.

Може да достъпвате стойност от предходни изрази чрез синтаксиса "ИНДЕКС.ИНДЕКС", където индексите са от 0, първия определя номера на израза, докато втория определя коя стойност искаме. Примерно:

  1 2
+ 3 4
  5 6 .
* 0.0 0.2 .

В последния израз умножаваме от нулевия израз, първата и третата стойност, тоест умножаваме 3 и 11.

Накрая трябва да изкарате всички стойности от последния израз.

warnПогледнете пояснението за вход/изход от последната задача от миналия път.

Пример:

Вход Изход
  1 5
+ 2 6
  3 7
  4 8 .
- 0.3 0.2 .
* 1.0 0.1 .
    1.0 3     0.2 3
  - 3   0.3   0.1 1.0
*   0.0 2.0 / 2.0 0.1 .
$
-3 -36 -20
︽