Advertisement
sashaaladko

Untitled

Dec 9th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
  4. const short length = 9;
  5.  
  6. char *From_Additional_form_to_Direct_form(char *&number);
  7. char *The_Sum(char *&number_1, char *&number_2);
  8. char *From_Natural_form_to_Additional_form(char *&number);
  9.  
  10. int main()
  11. {
  12. setlocale(LC_ALL, "Rus");
  13. char *number_1 = new char[length + 1];
  14. char *number_2 = new char[length + 1];
  15. cout << "введите восьмибитное число:";
  16. cout << endl << "число 1: ";
  17. cin >> number_1;
  18. cout << "число 2: ";
  19. cin >> number_2;
  20. cout << number_1 << " + " << number_2 << " = ";
  21.  
  22. cout << The_Sum(number_1, number_2);
  23.  
  24. system("pause");
  25. return 0;
  26. }
  27.  
  28. char *From_Additional_form_to_Direct_form(char *&number) {
  29. if (number[0] == '1') {
  30.  
  31. for (short i = length - 1; i > 0; i--) { // +1 (from 10101 to 10110)
  32. if (number[i] == '1') {
  33. number[i] = '0';
  34. break;
  35. }
  36. else {
  37. number[i] = '1';
  38. continue;
  39. }
  40. }
  41.  
  42. for (short i = 0; i < length; i++) { // from 1010 to 0101
  43. if (number[i] == '1') {
  44. number[i] = '0';
  45. }
  46. else {
  47. number[i] = '1';
  48. }
  49. }
  50. number[0] = '1';
  51. }
  52.  
  53. return number;
  54. }
  55.  
  56. char *The_Sum(char *&number_1, char *&number_2) {
  57. From_Natural_form_to_Additional_form(number_1);
  58. From_Natural_form_to_Additional_form(number_2);
  59.  
  60. char *add_result = new char[length + 1];
  61.  
  62.  
  63. short memory = 0;
  64. for (short i = length - 1; i >= 0; i--) {
  65. if (number_1[i] + number_2[i] - '0' - '0' + memory == 2) {
  66. memory = 1;
  67. add_result[i] = '0';
  68. }
  69. else if (number_1[i] + number_2[i] - '0' + memory == '3') {
  70. memory = 1;
  71. add_result[i] = '1';
  72. }
  73. else {
  74. add_result[i] = number_1[i] + number_2[i] - '0' + memory;
  75. memory = 0;
  76. }
  77. }
  78.  
  79. return From_Additional_form_to_Direct_form(add_result);
  80. }
  81.  
  82. char *From_Natural_form_to_Additional_form(char *&number) {
  83.  
  84. short delta = 0;
  85. for (short i = length - 1; number[i] == '\0'; i--, delta++) {
  86.  
  87. }
  88.  
  89. int z = -1;
  90. if (number[0] == '-') {
  91. number[0] = '1';
  92. z = 0;
  93. }
  94.  
  95. for (short i = length - 1 - delta; i > z; i--) {
  96. number[i + delta] = number[i];
  97. number[i] = '0';
  98. }
  99. for (int i = 0; i < length; i++) {
  100. if (number[i] == '\0') {
  101. number[i] = '0';
  102. }
  103. }
  104.  
  105. if (number[0] == '1') {
  106. for (short i = 0; i < length; i++) { // from 1010 to 0101
  107. if (number[i] == '1') {
  108. number[i] = '0';
  109. }
  110. else {
  111. number[i] = '1';
  112. }
  113. }
  114. number[0] = '1';
  115. for (short i = length - 1; i > 0; i--) { // +1 (from 10101 to 10110)
  116. if (number[i] == '0') {
  117. number[i] = '1';
  118. break;
  119. }
  120. else {
  121. number[i] = '0';
  122. continue;
  123. }
  124. }
  125. }
  126.  
  127. return number;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement