Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. int val(char c) {
  6. if (c >= '0' && c <= '9')
  7. return (int)c - '0';
  8. else
  9. return (int)c - 'A' + 10;
  10. }
  11. int toDeci(char *str, int base) {
  12. int len = strlen(str);
  13. int power = 1;
  14. int num = 0;
  15. int i;
  16. for (i = len - 1; i >= 0; i--) {
  17. if (val(str[i]) >= base) {
  18. printf("Invalid Number");
  19. exit(-1);
  20. }
  21. num += val(str[i]) * power;
  22. power = power * base;
  23. }
  24. return num;
  25. }
  26. char reVal(int num) {
  27. if (num >= 0 && num <= 9)
  28. return (char)(num + '0');
  29. else
  30. return (char)(num - 10 + 'A');
  31. }
  32. void strev(char *str) {
  33. int len = strlen(str);
  34. int i;
  35. for (i = 0; i < len/2; i++) {
  36. char temp = str[i];
  37. str[i] = str[len-i-1];
  38. str[len-i-1] = temp;
  39. }
  40. }
  41. char* fromDeci(char res[], int base, int inputNum) {
  42. int index = 0;
  43. while (inputNum > 0) {
  44. res[index++] = reVal(inputNum % base);
  45. inputNum /= base;
  46. }
  47. res[index] = '\0';
  48. strev(res);
  49. return res;
  50. }
  51. int main() {
  52. cout << "Vvedite chislo: ";
  53. char num1[256];
  54. cin >> num1;
  55. cout << "Vvedite staroe osnovanie: ";
  56. int num1b;
  57. cin >> num1b;
  58. int indec = toDeci(num1, num1b);
  59. cout << "Vvedite novoe osnovanie: ";
  60. int num2b;
  61. cin >> num2b;
  62. char res[128] = {0};
  63. char* num2 = fromDeci(res, num2b, indec);
  64. cout << "Converted: " << num2 << endl;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement