ademosh

10 транспозиция

Nov 10th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. #include "pch.h"
  2. #include <fstream>
  3. #include <string>
  4. #include <algorithm>
  5. #include <iostream>
  6.  
  7.  
  8.  
  9. using namespace std;
  10. //Объявляем массив символов русского и английского алфавита
  11. string alpha = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя,-.";
  12. int code(char str)
  13. {
  14. for (int i = 0; i < 33; i++) {
  15. if (str == alpha[i])
  16. return i;
  17. }
  18. }
  19.  
  20. int main() {
  21. system("chcp 1251");
  22. system("cls");
  23. setlocale(LC_ALL, "Russian");
  24. ifstream start("start.txt");
  25. ofstream output("out.txt");
  26. char alphaB[20][2];
  27. char bufer[50];
  28. string message;
  29. string key;
  30. string decode;
  31. getline(start, key);
  32. getline(start, message);
  33. string keyb = key;
  34. cout << endl;
  35. cout << message.length() << ' ' << key.length();
  36. int s;
  37. if (message.length() % key.length() > 0) {
  38. s = (message.length() / key.length()) + 1;
  39. }
  40. else
  41. s = message.length() / key.length();
  42. int o;
  43. cout << s << endl;
  44. char **mat;
  45. mat = new char*[key.length()];
  46. for (int i = 0; i < s; i++)
  47. mat[i] = new char[key.length()];
  48. char **matc;
  49. matc = new char*[key.length()];
  50. for (int i = 0; i <= s; i++)
  51. matc[i] = new char[key.length()];
  52. for (int i=0; i<s;++i)
  53. for (int j = 0; j < key.length(); j++) {
  54. if (message.empty()) {
  55. mat[i][j] = '|';
  56. }
  57. else {
  58. char buf = message[0];
  59. message.erase(0, 1);
  60. mat[i][j] = buf;
  61. }
  62. }
  63. for (int j = 0; j < key.length(); j++)
  64. cout << key[j] << ' ';
  65. cout << endl;
  66. for (int i = 0; i < s; ++i) {
  67. {
  68. for (int j = 0; j < key.length(); ++j)
  69. cout << mat[i][j] << ' ';
  70. cout << endl;
  71. }
  72. }
  73. int ukaz = 0;
  74. for (int i = 0; i < 33; ++i){
  75. for (int j = 0; j < key.length(); ++j) {
  76.  
  77. if (alpha[i] == key[j])
  78. {
  79. matc[0][ukaz%key.length()] = alpha[i];
  80. for (int ic = 1; ic <= s; ++ic) {
  81. matc[ic][ukaz%key.length()] = mat[ic-1][j];
  82. }
  83. ukaz++;
  84. }
  85. }
  86. }
  87. cout << endl;
  88. for (int i = 0; i <= s; ++i) {
  89. {
  90. for (int j = 0; j < key.length(); ++j)
  91. cout << matc[i][j] << ' ';
  92. cout << endl;
  93. }
  94. }
  95. cout << endl;
  96. for (int j = 0; j < key.length(); ++j) {
  97. for (int t=0;t<key.length();++t)
  98. if (key[j] == matc[0][t]) { //тут мы нашли совпадение текущей буквы ключа и 0 символа столбца
  99. for (int i = 0; i <= s; ++i) {
  100. char buf;
  101. buf = matc[i][j];
  102. matc[i][j] = matc[i][t];
  103. matc[i][t] = buf;
  104. }
  105. }
  106. }
  107. cout << endl;
  108. for (int i = 0; i <= s; ++i) {
  109. {
  110. for (int j = 0; j < key.length(); ++j)
  111. cout << matc[i][j] << ' ';
  112. cout << endl;
  113. }
  114. }
  115. cout << endl;
  116. system("pause");
  117. return 0;
  118. }
Add Comment
Please, Sign In to add comment