программа шифрует текст методом двойной перстановки, тоесть переставляет столбик и столбец. входные данные: файл тхт с текстом и с клавы вводить 2 числа(длина матрицы) и затем вводятся ключи(как перставлять) допустим 4-5-4231-52413
допустим у нас матрица 5 на 5, тоест ьмы можем считать 25 символов. задача такая: чтобы прога считала пару блоков, тоесть если 150 символов, то прога проходит 6 блоков. есть 2 идеи: прочитать весь массив в строку и работать уже со строкой(но не рационально) 2-считывать с текста, пока не будет 0х0. но я не могу это написать, помогите одним из способов
| Код | #include<stdio.h> #include<iostream> #include<conio.h> #include<time.h> #include<stdlib.h> #include<ctype.h> using namespace std;
int main(){ char A[100][100],B[100][100]; int i,j,k,m,c,d,K,C[50],D[50]; cout<<"vvedite dliny kluchei, vnachale visote,potom dliny"<<endl; cin>>d>>c; for(i=0;i<d;i++) // d-высота массива D[i]- массив столбца cin>>D[i]; for(i=0;i<c;i++) //c-длина С[i]- длина cin>>C[i]; for(i=0;i<d;i++){ // заполняем массив шлаком for(j=0;j<c;j++) A[i][j]=' '; //rand()%26+'a'; }
freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
for(i=0;i<d;i++) // вводим массив for(j=0;j<c;j++) scanf("%c",&A[i][j]);
for(i=0;i<d;i++){ //работаем с переварачиваением строк о-длина столбцов k=D[i]; for(j=0;j<c;j++){ B[k-1][j]=A[i][j]; } } for(j=0;j<c;j++){ for(i=0;i<d;i++) A[i][k-1]=B[i][j]; } for(i=0;i<d;i++) for(j=0;j<c;j++) printf("%c",A[i][j]); return 0; }
|
|