#include <stdio.h>
int div(int x, int y, int z)
{
int i;
for(i=0;(x-y)>=0;i++){x-=y;}
if(z==1)return x;
else return i;
}
int main()
{
int input, output, i, j, in_per, m[4];
while(printf("Введите четырехзначное число: ")) /*Ввод числа*/
{
scanf("%d", &input);
in_per=input;
for(i=0;input>0;i++)input/=10;
if(i==4){input=in_per; printf("%4d\n", input); break;}
else printf("Неверный ввод! Число должно быть четырехзначным.\n"); /*Проверка кол-ва символов*/
}
for(i=1000,j=3;i>0,j>=0;j--,i/=10)
{
m[j]=div(input,i,0);
input=div(input,i,1);
} /*Определяем каждую цифру числа*/
for(i=0;i<4;i++)
{
if(m[i]>2)
{
m[i]+=7;
m[i]=div(m[i],10,1);
}
else m[i]+=7;
} /*Складываем каждый элемент и 7*/
for(i=0;i<4;i++)printf("%d",m[i]);putchar('\n'); /*Выводим "сложенное" число на экран*/
for(i=0;i<2;i++)
{
in_per=m[i];
j=div(i+2,4,1);
m[i]=m[j];
m[j]=in_per;
} /*Меняем местами 1 и 3, 2 и 4*/
for(i=0;i<4;i++)printf("%d",m[i]);putchar('\n'); /*Выводим шифрованное число на экран*/
return 0;
}
Вот у меня получился такой код для шифровки, он имеет несколько багов.
#include <stdio.h>
int div(int x, int y, int z)
{
int i;
for(i=0;(x-y)>=0;i++){x-=y;}
if(z==1)return x;
else return i;
}
int main()
{
int input, output, i, j, in_per, m[4];
while(printf("Введите четырехзначное число: ")) /*Ввод числа*/
{
scanf("%d", &input);
in_per=input;
for(i=0;input>0;i++)input/=10;
if(i==4){input=in_per; printf("%4d\n", input); break;}
else printf("Неверный ввод! Число должно быть четырехзначным.\n"); /*Проверка кол-ва символов*/
}
for(i=1000,j=3;i>0,j>=0;j--,i/=10)
{
m[j]=div(input,i,0);
input=div(input,i,1);
} /*Определяем каждую цифру числа*/
for(i=0;i<4;i++)
{
if(m[i]<7)
{
m[i]-=7;m[i]+=10;
}
else m[i]-=7;
}/*Чиним число*/
for(i=0;i<4;i++)printf("%d",m[i]);putchar('\n');/*Выводим "починенные" цифры на экран*/
for(i=0;i<2;i++)
{
in_per=m[i];
j=div(i+2,4,1);
m[i]=m[j];
m[j]=in_per;
}/*Меняем местами 1 и 3, 2 и 4*/
for(i=0;i<4;i++)printf("%d",m[i]);putchar('\n'); /*Выводим дешифрованное число на экран*/
return 0;
}
Код для расшифровки, точно такие же, как и в первом, баги.
Простите за неграмотность в языке си, хотел проверить, что у меня получится.
Оба кода работают, но не содержат проверки на символы, тоесть буквы он воспринимает и потом просто зацикливается.
Также у меня что то не сошлось с массивом.
Я использовал только одну функцию, которая делит с остатком и может возвращать либо остаток, либо результат деления. Есть еще массив, но я просто не понимаю, как без него обойтись.
еще раз простите за неграмотность.