int i=0;
while (text[i]=’\0’) //використання \0
{m=0; for (int j=0; j<=126; j++)
{if (text[i]= = alphabet[j])
{text[i]= alphabet[126-j]; m++; break; };
if (m= =0) cout<<”\n невизначений знак “
<<text[i]; i++; };
}
Кожний символ text (буква, знак або команда) порівнюються з символами ключового масиву. При збігу символ тексту замінюється по обумовлюючому правилу: коли цикл порівняний переривається, починається обробка наступного символу. Коли відповідний символ у ключовому масиві не знайдений, то замінна не здійснюється, на екрані висвітлюється попереджуючий запис, знак передається у текст, що обробляється, у початковому вигляді. Для індексації невизначених знаків використовується індекс m, котрій при зміні символу міняє своє значення з 0 на 1. Невпізнані знаки не враховуються при роботі алгоритму, але їх кількість повинна бути розумною, тому що у протилежному випадку текст не буде зашифрований.
Однак, порядок знаків в alphabet не впливає на роботу алгоритму, що дозволяє робити різні шифрограми.
Програма PART3\3_10 за допомогою функції-підпрограми tarabar зашифровує та розшифровує відомий англійський стирок і його перевід на російську мову. У кінці тексту додаються два знаки (# і $), котрих немає у ключовому масиві.
Рядки (у подвійних лапках) тексту і ключового масиву у програмі повинні бути записані в одному рядку. Розділення обох текстів на декілька рядків у програмі зроблено тимчасово, тільки для зручності друку. При виводі результату на екран комп’ютер сам розділяє довгий рядок на частини, які розміщуються на екрані. Коли у рядку, що виводиться на екран, є символ \n, команда виконується, але сама керуюча послідовність не виводиться
Результат виконання програми шифровки і розшифровки тексту розглянутий нижче.
Оглядові запитання
1. Який фрагмент у функції-підпрограми tarabar?
2. Що містить константний масив alphabet?
3. Як сприймаються команди \ n, \0?
4. З чим порівняється кожний символ text у програмі?
5. Що робиться, коли відповідний символ у ключовому масиві не знайдений?
6. Як реагує алгоритм, коли зустрічається невизначений знак?
7. Що робить функція-підпрограма tarabar?
8. Як повинні записуватися рядки тексту у подвійних лапках?