1

Тема: Алфавіт

Доброго дня!
Як можна замінити кожну букву слова на число, що відповідає її позиції в алфавіті. a-0, b1 ....
Функція ord('a') працює тільки для таблиці ACSII?

2

Re: Алфавіт

Можна створити свою функцію. У функцію підпихнути свої "словники"

Подякували: Q-bart1

3

Re: Алфавіт

Q-bart
Або можна скористатися тим фактом, що у ACSII англійські літери розташовані в алфавітному порядку, тільки нумерація йде не з нуля, й відрізняється для великих та малих літер.

Подякували: Q-bart1

4

Re: Алфавіт

Q-bart написав:

Функція ord('a') працює тільки для таблиці ACSII?

Відповідь на це питання ви можете знайти в довідці до вашої версії компілятора.

Подякували: Q-bart1

5

Re: Алфавіт

Отже, вернусь я до цієї задачі

задача

У шифрі кожне слово шифрується окремо. Розглянемо шифрування на прикладі слів, що складаються лише з малих латинських літер.
На початку кожна буква замінюється відповідним їй числом: a на 0, b на 1, c на 2, ..., z на 25. Після цього до першого числа додається 5, до другого числа додається перше число, до третього - друге і т.д. Після цього якщо якесь число перевищує 25, то воно замінюється залишком від ділення цього числа на 26. І, нарешті, числа назад замінюються буквами.
Зашифруємо слово secret:
Крок 0. secret
Крок 1. 18 4 2 17 4 19
Крок 2. 23 27 29 46 50 69
Крок 3. 23  1   3  20 24 17
Крок 4. xbduyr
У підсумку вийшло слово xbduyr.

Ось мій недоалгоритм
1. Вводим стрічку.(xbduyr),
2. Заміняєм цифрами (23  1  3  20 24 17),
3. Тут нам треба дізнатися ділене, маючи лише дільник(26) і остачу(цифри з попереднього пункту)
    Я знаю таку формулу - дільник додаємо до частки і множимо на остачу. Але немає частки.....
    Що робити?

6

Re: Алфавіт

Не має жодного значення, знаходити залишок після всіх додавань чи після кожного. Залишки все одно лишаються такими самими. А тому можна просто віднімати сусідні елементи і додавати до них 26, якщо результат від'ємний.