1 Востаннє редагувалося Droid 77 (16.07.2023 20:48:25)

Тема: Алгоритм присвоєння значень елементам масиву.

Мета певній кількості елементів буквеного та цифрового ряду присвоїти певні значення. Назвемо це кодування. Введено один символ, отримали два символи.
Маємо певну таблицю для кодування (щось на зразок Німецької машинки Енігма).
Зчитування з клавіатури. Введення символів латиницею. Є певна кількість символів для введення. Зчитуємо введений символ, перевірка на коректність, якщо так кодуємо символ.

Зара я на стадії введення та перевірки.
Як тре вести перевірку?
По преше як перевірити яка мова на клавіатурі увімкнена?
Друге. введено символ. Прогоняти його через масив дозволених?
Як тоді краще зберігати базу дозволеного, просто якийсь там *.dat файл?

2 Востаннє редагувалося HetmanNet (17.07.2023 09:51:55)

Re: Алгоритм присвоєння значень елементам масиву.

Droid 77 написав:

Як тре вести перевірку?

Залежить від обмежень. Якщо перевіряєте чи латиниця то відповідно на приналежність літер діапазону кодів латинських літер у кодовій таблиці і т.д.

Droid 77 написав:

По преше як перевірити яка мова на клавіатурі увімкнена?

Залежить від ОС. Хоча навіщо вам то робити? Ви збираєтеся перехоплювати на низькому рівні ввід та використовувати кілька мов? Якщо ні то просто по приналежності тій чи іншій частині кодової таблиці (того чи іншого діапазону в ній) визначати яка мова прилетіла. Якщо навіть на низькому рівні і ви отримуєте коди клавіш то яка вам різниця яка розкладка? У вас вона завжди може бути латиницею бо просто декодуєте завжди коди клавіш по латинській схемі.

Droid 77 написав:

Друге. введено символ. Прогоняти його через масив дозволених?

Можна так, можна інакше, все залежить від того як збираєтеся робити підміну. Якщо у вас просто підміна то можна проганяти через масив і при наявності збігу одразу підміняти, якщо у вас як в Енігма на кодування впливає значення попереднього символу то тут вже є варіанти.

Droid 77 написав:

Як тоді краще зберігати базу дозволеного, просто якийсь там *.dat файл?

Якщо плануєте змінювати то так, якщо ні то просто в самому коді.

Подякували: leofun011

3

Re: Алгоритм присвоєння значень елементам масиву.

Droid 77 написав:

Введено один символ, отримали два символи.

Тобто результат кодування завжди удвічі довший за оригінальний текст?

Droid 77 написав:

Маємо певну таблицю для кодування (щось на зразок Німецької машинки Енігма).

Підстановочні шифри навчилися ламати давно; Енігма була дещо складніша. То у вас Енігма чи підстановки з таблиці?

Droid 77 написав:

По преше як перевірити яка мова на клавіатурі увімкнена?

Ніяк. Ви не можете передбачити, які в майбутньому будуть розкладки і як саме буде вводитися інформація. Хочете, щоб ваш код ламався на українській латинці або на читанні з файла? Чи на вставленні інформації з буфера?

Droid 77 написав:

Прогоняти його через масив дозволених?

Це непоганий варіант, бо тоді можна буде як завгодно його модифікувати без змін коду.
Але краще придумати шифр, що працюватиме з усіма можливими вхідними даними, тобто, наприклад, з UTF-8, або взагалі з потоком байтів. Тоді треба лише перевіряти загальну коректність стандартними функціями чи просто читати, що дав користувач.

Подякували: leofun011