Advertisement
Guest User

Untitled

a guest
Dec 29th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | None | 0 0
  1. char **GridFill(char **grid,int **coordinates,char *message, int *key, int keyCount, int gridSide)
  2. {
  3.     //keyCount - длина ключа
  4.     int i,c,row,col,count,shift;
  5.     char temp[gridSide],temp2[gridSide],buffer[1];
  6.  
  7.     count = 0;  //количество поворотов решетки
  8.  
  9.     while (count < 4) {
  10.         for (i = 0; i < keyCount; i++) {
  11.             row = coordinates[i][(key[i])];
  12.             col = coordinates[i][(key[i] + 1)]; //исправить кодирование символов, скорее всего ошибка в индексе столбцов
  13.             if (col != 0) {
  14.                 for (c = 0;c < gridSide;c++) {
  15.                     temp[c] = '\0';
  16.                 }
  17.                 strncpy(temp, grid[row], col);
  18.                 StringCopy(grid[row], temp2, gridSide);
  19.                 strncpy(buffer, message, 1);
  20.                 strncat(temp, buffer, 1);
  21.                 shift = gridSide - (gridSide - col) + 1;
  22.                 if (col != (gridSide - 1)) {
  23.                     while (shift > 0) {
  24.                         for (c = 0; c < gridSide; c++) {
  25.                             temp2[c] = temp2[c + 1];
  26.                         }
  27.                         --shift;
  28.                     }
  29.                     strncat(temp, temp2, (gridSide - strlen(temp)));
  30.                 }
  31.                 strcpy(grid[row], temp);
  32.  
  33.             } else {
  34.                 grid[row][col] = message[0];
  35.             }
  36.  
  37.             for (c = 0;c < keyCount * 4;c++) {
  38.                 message[c] = message[c + 1];
  39.             }
  40.             message[c + 1] = '\0';
  41.         }
  42.         for (i = 0;i < keyCount;i++) {
  43.             if (key[i] != 6) {
  44.                 key[i] = key[i] + 2;
  45.             } else {
  46.                 key[i] = 0;
  47.             }
  48.         }
  49.         count++;
  50.     }
  51.     //if (message != NULL) {
  52.     //    free(message);
  53.         message = NULL;
  54.     //}
  55.     return grid;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement