Advertisement
Guest User

test

a guest
Jan 21st, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <stdlib.h>
  6. #include <iostream>
  7. #include <windows.h>
  8.  
  9. using namespace std;
  10.  
  11. const string digits = "0123456789ABCDEFGHIJKLMNOPQRASUVWXYZ";
  12.  
  13. void validation(int base) {
  14. cout << "Error: исходное число ¤вл¤етс¤ некорректной записью дл¤ системы с основанием " << base << ".\n¬ ";
  15. cout << base << "-ой системе допустимы только следующие символы: ";
  16. for (int i = 0; i < base; i++) {
  17. cout << digits[i] << " ";
  18. }
  19. }
  20.  
  21. string DecToAny(int number, int to_final) {
  22. string result;
  23.  
  24. cout << endl << "ѕереводим целую часть " << number << " в " << to_final << "-ую систему последовательным делением на " << to_final << ":" << endl;
  25.  
  26. do {
  27. cout << number << " / " << to_final << " = " << number / to_final << ", остаток:" << digits[number % to_final] << endl;
  28. result.push_back(digits[number % to_final]);
  29. number /= to_final;
  30. } while (number > 0);
  31. reverse(result.begin(), result.end());
  32.  
  33. return result;
  34. }
  35.  
  36. void translation() {
  37. string number;
  38.  
  39. cout << "Number: ";
  40. getline(cin, number);
  41.  
  42. for (int i = 0; i < number.size(); i++) {
  43. if ((int)number[i] < 0) {
  44. cout << "¬вод произведен на русской раскладке клавиатуры.\nƒопустимы только числа и буквы англиского алфавита:" << endl;
  45. cout << digits;
  46. return;
  47. }
  48. }
  49.  
  50. if (number.find("-") != -1) {
  51. cout << "Error: исходное число ¤вл¤етс¤ отрицательным";
  52. return;
  53. }
  54.  
  55. int base;
  56. cout << "in ";
  57. cin >> base;
  58.  
  59. for (int i = 0; i < number.size(); i++) {
  60. if (base > 10) {
  61. if (!(number[i] >= 'A' && number[i] <= base - 10 + 'A' || isdigit(number[i]) || number[i] == '.')) {
  62. validation(base);
  63. return;
  64. }
  65. }
  66. else {
  67. if (!(number[i] - '0' >= 0 && number[i] - '0' < base || number[i] == '.')) {
  68. validation(base);
  69. return;
  70. }
  71. }
  72. }
  73.  
  74. if ((base < 2 || base > 36)) {
  75. cout << "Error: основание исходной системы должны быть в диапазоне от 2 до 36.";
  76. return;
  77. }
  78.  
  79. int to_final;
  80. cout << "to ";
  81. cin >> to_final;
  82.  
  83. if ((to_final < 2 || to_final > 36)) {
  84. cout << "Error: основание конечной системы должны быть в диапазоне от 2 до 36.";
  85. return;
  86. }
  87.  
  88. int digit;
  89. if (base == 10) {
  90. digit = atoi(number.c_str());
  91. cout << endl << "Result: " << DecToAny(digit, to_final);
  92. return;
  93. }
  94. }
  95.  
  96. int main() {
  97. //setlocale(LC_ALL, "Russian");
  98. SetConsoleCP(1251);
  99. SetConsoleOutputCP(1251);
  100.  
  101. translation();
  102. cout << endl;
  103. system("pause");
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement