Code: Select all
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#define MAX 100
void encode(char mas[],long b);
void decode(char mas[],long b);
void rev(int n);
void main()
{
char mas[MAX];
long p,b;
while(gets(mas))
{
b=strlen(mas);
if(!isdigit(mas[0]))
p=0;
else if(isdigit(mas[0]))
p=1;
if(!p)
encode(mas,b);
else if(p)
decode(mas,b);
}
}
void encode(char mas[],long b)
{
long a,n;
for(a=b-1;a>=0;a--)
{
n=mas[a];
rev(n);
}
printf("\n");
}
void decode(char mas[],long b)
{
char ch;
long marker,x,y,z,a,nn,de[MAX];
for(a=0;a<b;a++)
de[a]=mas[a]-48;
marker=1;
for(;;)
{
x=b-marker;
marker++;
y=b-marker;
nn=10*de[x]+de[y];
if(nn>=32)
{
ch=(char)nn;
printf("%c",ch);
if(marker<b)
marker++;
}
else if(nn<32)
{
marker++;
z=b-marker;
nn=100*de[x]+10*de[y]+de[z];
ch=(char)nn;
printf("%c",ch);
if(marker<b)
marker++;
}
if(marker==b) break;
}
printf("\n");
}
void rev(int n)
{
int a,b,c,d[10],e,f;
for(c=0;;c++)
{
a=n%10;
d[c]=a;
b=n/10;
if(b>=10)
{
n=b;
}
else
{
e=c+1;
d[e]=b;
break;
}
}
for(f=0;f<=e;f++)
printf("%ld",d[f]);
}