Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- char input[300];
- char m[10][10];
- printf("Type 1, if you want to crypt text,\n 2 - to encrypt,\n 0 to exit\n");
- int e, type;
- scanf("%d", &e);
- while (e != 0)
- {
- if (e == 1)
- {
- printf("Enter input string: \n");
- scanf("%s", &input);
- printf("Enter route type: ");
- scanf("%d", &type);
- int n = 1;
- while (n * n < strlen(input))
- {
- n++;
- }
- int t = 0; // указатель на элемент входной строки
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (t >= strlen(input))
- {
- m[i][j] = '.';
- }
- else
- {
- m[i][j] = input[t];
- t++;
- }
- }
- }
- printf("Input: %s\nResult: ", input);
- char result[200];
- int x = 0; // номер строки
- int y = 0; // номер столбца
- int p = 0; // направление, если 0, то вниз, иначе вверх
- // 1
- if (type == 4)
- {
- while (y < n)
- {
- printf("%c", m[x][y]);
- if (p == 0)
- {
- if (x == n - 1)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- x++;
- }
- }
- else
- {
- if (x == 0)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- x--;
- }
- }
- }
- }
- if (type == 1)
- {
- while(y < n)
- {
- printf("%c", m[x][y]);
- if (x == n - 1)
- {
- x = 0;
- y++;
- }
- else
- {
- x++;
- }
- }
- }
- if (type == 3)
- {
- for (;;)
- {
- printf("%c", m[x][y]);
- if (x == n - 1 && y == n - 1)
- {
- break;
- }
- if (y == n - 1 && p == 0)
- {
- x++;
- p = (p + 1) % 2;
- }
- else
- {
- if (x == 0 && p == 0)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- if (x == n - 1 && p == 1)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- if (y == 0 && p == 1)
- {
- x++;
- p = (p + 1) % 2;
- }
- else
- {
- if (p == 0)
- {
- x--;
- y++;
- }
- else
- {
- x++;
- y--;
- }
- }
- }
- }
- }
- }
- }
- if (type == 2)
- {
- for(int k = 1; k <= n / 2; k++)/*Цикл по номеру витка*/
- {
- for (int j=k-1; j<n-k+1; j++)
- {
- printf("%c", m[k-1][j]);
- }
- for (int j=k; j<n-k+1; j++)
- printf("%c", m[j][n-k]);
- for (int j=n-k-1; j>=k-1; --j)
- printf("%c", m[n-k][j]);
- for (int j=n-k-1; j>=k; j--)
- printf("%c", m[j][k-1]);
- }
- }
- printf("\n");
- for (int i = 0 ; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- printf("%c", m[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- }
- if (e == 2)
- {
- printf("Enter crypted text: \n");
- scanf("%s", &input);
- printf("Input: %s\n", input);
- printf("Enter route type: ");
- scanf("%d", &type);
- int n = 1;
- while (n * n < strlen(input))
- {
- n++;
- }
- int x = 0; // номер строки
- int y = 0; // номер столбца
- int t = 0;
- int p = 0; // направление, если 0, то вниз, иначе вверх
- // 1
- if (type == 4)
- {
- while (y < n)
- {
- m[x][y] = input[t];
- t++;
- if (p == 0)
- {
- if (x == n - 1)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- x++;
- }
- }
- else
- {
- if (x == 0)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- x--;
- }
- }
- }
- }
- if (type == 1)
- {
- while(y < n)
- {
- m[x][y] = input[t];
- t++;
- if (x == n - 1)
- {
- x = 0;
- y++;
- }
- else
- {
- x++;
- }
- }
- }
- if (type == 3)
- {
- for (;;)
- {
- m[x][y] = input[t];
- t++;
- if (x == n - 1 && y == n - 1)
- {
- break;
- }
- if (y == n - 1 && p == 0)
- {
- x++;
- p = (p + 1) % 2;
- }
- else
- {
- if (x == 0 && p == 0)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- if (x == n - 1 && p == 1)
- {
- y++;
- p = (p + 1) % 2;
- }
- else
- {
- if (y == 0 && p == 1)
- {
- x++;
- p = (p + 1) % 2;
- }
- else
- {
- if (p == 0)
- {
- x--;
- y++;
- }
- else
- {
- x++;
- y--;
- }
- }
- }
- }
- }
- }
- }
- if (type == 2)
- {
- for(int k = 1; k <= n / 2; k++)
- {
- for (int j=k-1; j<n-k+1; j++)
- {
- m[k-1][j] = input[t];
- t++;
- };
- for (int j=k; j<n-k+1; j++)
- {
- m[j][n-k] = input[t];
- t++;
- };
- for (int j=n-k-1; j>=k-1; --j)
- {
- m[n-k][j] = input[t];
- t++;
- };
- for (int j=n-k-1; j>=k; j--)
- {
- m[j][k-1] = input[t];
- t++;
- };
- }
- }
- //
- printf("Result: ");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- printf("%c", m[i][j]);
- }
- }
- }
- printf("\nType 1, if you want to crypt text,\n 2 - to encrypt,\n 0 to exit\n");
- scanf("%d", &e);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement