kotandrey, господи, код просто жахливий, як ви самі в ньому орієнтуєтесь?
Ви хоча б читали, що я вам писав?
adziri написав:Покажіть мінімальний уривок коду, який компілюється і демонструє вашу
проблему
Більше того, Ви просто взяли і видерли частину коду з вашої програми, таким чином,
що нікому не вдалось би її запустити.
Якщо Ви хочете, щоб вам могли швидко допомогти, постарайтеся повно описати вашу
проблему, дати необхідні частини коду, дані які вводите, компілятор, ОС і т.д. Це
значно б спростило роботу нам, бо не прийшлося би витягувати з вас інформацію.
Бажано б вам ознайомитися з http://xyproblem.info/
kotandrey написав:Це проста задача з шифрування, в ній gets(S1) чомусь не працює
Що означає не працює? Чомусь?
Ехх, гаразд.
1. Ніколи не змішуйте Сі та С++ - це різні мови, як банально б це не звучало. Чому ви
використовуєте то std::cin/std::cout, то pust/gets, яка причина переходу?
В С++ є свої аналоги, з ними і працюйте. Більше того gets з С++ був видалений
в С++14, а ви його використовуєте, ще й звичайну версію, а не gets_s чи fgets,
звідси можна зробити висновок, що у вас не КаЕль або він дуже старий
2.
char S[2000];
int i,n,k,j;
...
char S1[2000];
Ефективне використання пам'яті? Ні, не чув
Назви змінних, звісно говорять самі за себе, як ви в них орієнтуєтесь?
3.
cout<<"Введіть ключ: "<<endl;
cin>>k;
От мене, як користувача просять ввести ключ, що роблю я, беру та вводжу
якесь число наприклад 25, а також після цього натискаю ентер, для завершення
вводу. В потік попадає значення 25<enter>, ми за допомогою cin>>k
зчитуємо з потоку лише число, а <enter> залишається у потоці висіти.
Згодом Ви, пане, намагаєтесь зчитати щось з потоку, проте там першим буде <enter>,
якщо ви читали мій перший пост, то знаєте, що gets зустрівши <enter>
завершує ввід, так і нічого не зчитавши з потоку і ваша програма закривається.
Також, якщо б Ви прочитали мій попередній пост, то побачили б, що я це передбачав:
adziri написав:P. S. Але можливо у вас у вхідному потоці вводу, залишається лишній символ
"\n", то вам варто очисти input stream, скориставшись ф-ю fflush,
наприклад.
Проте, я ж незнав, що ви пишете в С++, тому краще замість fflush скористатися
std::cin.clear, та повикидувати всі pust/gets і замінити на std::cin/std::cout.
Проте, звісно я ж незнаю чи це єдина проблема вашого коду, бо цілого я не бачив,
надіюся там ніде в циклах немає UB