fork(5) download
  1. #include <ctype.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. char *sysconv(unsigned sysin,unsigned sysout,const char *in,char *out)
  7. {
  8. static char digits[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  9. unsigned p,m;
  10. char *end,*pos,tmp;
  11. for(*out='0',end=out+1;*in;++in)
  12. {
  13. p=strchr(digits,toupper(*in))-digits;
  14. for(pos=out;pos<end;*(pos++)=digits[m-(p=m/sysout)*sysout]) m=(strchr(digits,toupper(*pos))-digits)*sysin+p;
  15. while(p) *(end++)=digits[m-(p=(m=p)/sysout)*sysout];
  16. }
  17. for(*end=0,pos=out;pos<end;tmp=*(--end),*end=*pos,*(pos++)=tmp) {}
  18. return out;
  19. }
  20.  
  21. int main()
  22. {
  23. unsigned sysin,sysout;
  24. static char in[1024],out[36*1024];
  25. for(;;)
  26. {
  27. printf("\rsystem wejsciowy: ");
  28. scanf("%u",&sysin);
  29. printf("\rsystem wyjsciowy: ");
  30. scanf("%u",&sysout);
  31. printf("\rliczba wejsciowa: ");
  32. scanf(" %1023s",in); // wypada jeszcze sprawdzić czy to poprawna liczba w systemie sysin ale to banał
  33. if(2>sysin||sysin>36||2>sysout||sysout>36) return 0;
  34. printf("\rliczba wyjsciowa: %s\n\n",sysconv(sysin,sysout,in,out));
  35. }
  36. }
Success #stdin #stdout 0s 2332KB
stdin
10
2
10

2
10
1010

36
2
Z

2
36
100011

36
10
ALEX

10
36
494313

0
0
0
stdout
system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: 1010


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: 10


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: 100011


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: Z


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: 494313


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: 
liczba wyjsciowa: ALEX


system wejsciowy: 
system wyjsciowy: 
liczba wejsciowa: