Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / 1семестр / wi1 / sipachov / lab1 / lab1
.c#include <stdio.h>
char c[255];
int ss1,ss2;
long long int ch;
char m[16]="0123456789ABCDEF";
int stp(int x,int y,long long int *t);
int izdvx(long long int ch,int ss,char c[255]);
int izxvd (char c[255], int ss,long long int *ch);
int main()
{
nextc:
printf("%s","vvedite s/s1 ");
scanf("%d", &ss1);
printf("%s", "vvedite chislo ");
scanf("%s",c);
printf("%s","vvedite s/s2 ");
scanf("%d", &ss2);
izxvd(c,ss1,&ch);
izdvx(ch,ss2,&c);
printf("%s \n%s ",c,"vvesti esche\? [y/n]");
getchar();
if ((getchar()=='y'))
goto nextc;
}
int izxvd (char c[255], int ss,long long int *ch)
{
int i,b,bc;
long int u;
*ch=0;
if ((ss>16)||(ss<2)) goto err;
for(i=1;i<=strlen(c);i++)
{
b=c[strlen(c)-i];
if ((b>m[ss-1])||(b<m[0])) goto err;
switch (b)
{
case '0':
bc=0;
break;
case '1':
bc=1;
break;
case '2':
bc=2;
break;
case '3':
bc=3;
break;
case '4':
bc=4;
break;
case '5':
bc=5;
break;
case '6':
bc=6;
break;
case '7':
bc=7;
break;
case '8':
bc=8;
break;
case '9':
bc=9;
break;
case 'A':
bc=10;
break;
case 'B':
bc=11;
break;
case 'C':
bc=12;
break;
case 'D':
bc=13;
break;
case 'E':
bc=14;
break;
case 'F':
bc=15;
break;
default: goto err;
}
{
err:
printf("%s","Error \n");
exit( -1);
}
stp(ss,i-1,&u);
*ch=*ch+u*bc;
}
return 0;
}
int izdvx(long long int ch,int ss,char c[255])
{
int ost,i;
char b;
i=0;
if((ss<2)||(ss>16))
{
printf("%s","Error \n");
exit(-1);
}
while (ch!=0)
{
ost=ch%ss;
b=m[ost];
c[i]=b;
i++;
ch=ch/ss;
}
c[i]=0;
for(i=0;i<=strlen(c)/2-1; i++)
{
b=c[i];
c[i]=c[strlen(c)-i-1];
c[strlen(c)-i-1]=b;
}
return 0;
}
int stp(int x,int y,long long int *t)
{
int i;
*t=1;
if(y!=0)
for(i=1;i<=y;i++) *t=*t*x;
return 0;
}