fork download
  1. program i_tak_nie_zdasz;
  2. uses math,sysutils;
  3.  
  4. function any2dec(input:string; base:integer):integer;
  5. var
  6. output,c,i,l,v:integer;
  7. begin
  8. output := 0;
  9. c := 0;
  10. l := Length(input);
  11. for i := l downto 1 do
  12. begin
  13. case input[i] of
  14. 'A': begin v := 10; end;
  15. 'B': begin v := 11; end;
  16. 'C': begin v := 12; end;
  17. 'D': begin v := 13; end;
  18. 'E': begin v := 14; end;
  19. 'F': begin v := 15; end;
  20. else v := StrToInt(input[i]);
  21. end;
  22. output := output + (v * floor(power(base, c)));
  23. inc(c);
  24. end;
  25. any2dec := output;
  26. end;
  27.  
  28. function dec2any(input:integer; base:integer):string;
  29. var
  30. modv:integer;
  31. output:string;
  32. begin
  33. output := '';
  34. while input > 0 do begin
  35. modv := input mod base;
  36. case modv of
  37. 10: begin output := 'A' + output; end;
  38. 11: begin output := 'B' + output; end;
  39. 12: begin output := 'C' + output; end;
  40. 13: begin output := 'D' + output; end;
  41. 14: begin output := 'E' + output; end;
  42. 15: begin output := 'F' + output; end;
  43. else output := IntToStr(modv) + output;
  44. end;
  45. input := floor(input/base);
  46. end;
  47. dec2any := output;
  48. end;
  49.  
  50. begin
  51. writeln(any2dec('1011101', 2)); {z binarnego}
  52. writeln(any2dec('473', 8)); {z oktalnego}
  53. writeln(any2dec('A75', 16)); {z heksadecymalnego}
  54.  
  55. writeln(dec2any(69, 2)); {na binarny}
  56. writeln(dec2any(142, 8)); {na oktalny}
  57. writeln(dec2any(3471, 16)); {na heksadecymalny}
  58. readln;
  59. end.
Success #stdin #stdout 0s 444KB
stdin
Standard input is empty
stdout
93
315
2677
1000101
216
D8F