Задачи - УПП, Седмица 11, 11.12.2025

question Има два начина да приемем низ от входа:
cin.getline(char*, size_t, char);
cin.get(char&);
Кога бихме избрали всеки от тях?

GitHub Classroom: https://classroom.github.com/a/z_C3UMi8

За решаване

Задача 1

От входа получавате 20 буквен низ: име. Трябва да изкарате съобщението "Hello [име]!"

Вход Изход
John Hello John!
Aleksandur Hello Aleksandur!

Задача 2

От входа получавате изречение: низ, завършващ на точка. Трябва да изкарате броя букви (малки или големи) в изречението.

Вход Изход
This is a very long sentence. 23
I'm 73 years old. 10

Задача 3

От входа получавате изречение: низ, завършващ на точка. Трябва да изкарате броя полета в низа.

Поле наричаме всяка последователност от букви, която не съдържа знака шпация.

Вход Изход
first second third fourth 4
I'm glad you're here! 4
a b c d 8 k * * 8

Задача 4

От входа получавате текст, докато не срещнете първия празен ред. Трябва да изкарате броя редове в текста.

Вход Изход
First line
Second line
Third line
3
Day had broken cold and grey, exceedingly cold and grey,
when the man turned aside from the main Yukon trail and
climbed the high earth-bank, where a dim and little-travelled
trail led eastward through the fat spruce timberland.
4

Задача 5

От входа получавате низ, завършващ на двоеточие и след това две реални числа. За всяко срещане на думата "sum" в низа, трябва да изкарате сумата на числата, и за всяко срещане на "sub" в низа, трябва да изкарате разликата на числата.

Вход Изход
sum: 5.5 0.5 6
sub: 2 3 -1
Here is the sum of the two numbers: 3.14 4.13 7.27
We can sum, subtract and sum again: 1 2 3 -1 3

Задача 6

От входа получавате ред, обозначаващ число в 16-тича бройна система. Тоест, реда започва с 0x и останалото са 16-тични цифри.

Трябва да изкарате стойността на числото в 10-тична бройна система, като направите конвертирането ръчно! Тоест не е позволено да използвате функционалност от стандартната библиотека!

Приемете, че буквите A-F са главни и че няма да имате водещи нули (напр. 0x0001).

Вход Изход
0x8 8
0x9 9
0xA 10
0xF 15
0x10 16
0xFF 255
0xABCDEF 11259375
0x5F3759DF 1597463007

Задача 7

От входа получавате 5 буквен низ и след това един ред текст. Трябва да изкарате всички срещания на първия низ във втория (като препокривания са позволени).

Вход Изход
abcde
One abcde twoabcdethree four five abcde
3
aaaaa
aaaaaaaaaaaaaaaaaaaa
16

Задача 8

От входа получавате букви, докато не срещнете низа "end". Трябва да изкарате всички полета в обратен ред.

Поле наричаме всяка последователност от букви, която не съдържа шпация.

Вход Изход
One two three end end three two One
They said he is free on the weekend weekend the on free is he said They

Задача 9

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

Вход Изход
aAAbbbb aA 3
z ZZ 0

За упражнение

Задача 10

От входа получавате ред с текст. Трябва да върнете дали е панграма на латинската азбука: дали всяка буква се среща поне веднъж (без значение дали е главна или малка).

Вход Изход
The quick brown fox jumps over the lazy dog. Pangram
Pack my box with five dozen liquor jugs. Pangram
Echo-changes every Thursday Not a pangram

Задача 11

От входа получавате два реда. Трябва да премахнете всяко срещане на втория ред в първия и да изкарате резултата.

Вход Изход
This is a very nice evening
i
Ths s a very nce evenng
Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo
buffalo
Buffalo  Buffalo    Buffalo 

Задача 12

От входа получавате ред с текст. Зачитайки го за парола, трябва да върнете колко силна е паролата.

Това са следните критерии, като всеки критерии добавя единица към общата оценка на паролата:

  1. Съдържа поне 15 букви
  2. Не съдържа съседни еднакви знаци
  3. Да съдържа поне една малка и главна латинска буква
  4. Да съдържа поне една цифра
  5. Да съдържа поне един знак, различен от цифра или буква

Накрая тряба да върнете оценката на паролата.

Вход Изход
hi 1
aa 0
Hello@World15 4
Ny$wtgYH62uTy@d 5

Задача 13

Хешираща функция е функция, която превръща низ в число. Една много често използвана е функцията на Fowler-Noll-Vo.

Тя работи по следния начин:

Използвайки 32-битовите offset basis (2166136261) и FNV простото число (16777619), изкарайте хешираната стойност на подадения ред текст.

Вход Изход
Hello World 310551791
Nothing 383317984
! 84696382
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements. 2174003109

Задача 14

От входа получавате два реда с текст. Трябва да върнете дали първия ред е анаграма на втория, тоест дали втория низ може да се получи след някакво разместване на всички (латински) букви в първия низ.

Игнорирайте дали буквата е главна или малка.

Вход Изход
New York Times
monkeys write
Anagram
barn
yarn
Not an anagram
evil
vile
Anagram
manually
by hand
Not an anagram
Tom Marvolo Riddle
I am Lord Voldemort
Anagram

За любознателните

Задача 15

От входа получавате два реда с текст. Трябва да пресметнете разстоянието на Ливенщайн между тях.

То се пресмята така:

  1. Ако един от двата текущи низа е празен, връщаме 0
  2. Ако първата буква от двата низа е еднаква, връщаме разстоянието на Ливенщайн от остатъка от низовете
  3. Иначе, връщаме 1 плюс най-малкото от разстоянията на Лиевнщайн между:
    • първия низ и остатъка на втория низ (без първата буква)
    • остатъка на първия низ (без първата буква) и втория низ
    • остатъците на двата низа (без първите им букви)