Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- const short length = 9;
- char *From_Additional_form_to_Direct_form(char *&number);
- char *The_Sum(char *&number_1, char *&number_2);
- char *From_Natural_form_to_Additional_form(char *&number);
- int main()
- {
- setlocale(LC_ALL, "Rus");
- char *number_1 = new char[length + 1];
- char *number_2 = new char[length + 1];
- cout << "введите восьмибитное число:";
- cout << endl << "число 1: ";
- cin >> number_1;
- cout << "число 2: ";
- cin >> number_2;
- cout << number_1 << " + " << number_2 << " = ";
- cout << The_Sum(number_1, number_2);
- system("pause");
- return 0;
- }
- char *From_Additional_form_to_Direct_form(char *&number) {
- if (number[0] == '1') {
- for (short i = length - 1; i > 0; i--) { // +1 (from 10101 to 10110)
- if (number[i] == '1') {
- number[i] = '0';
- break;
- }
- else {
- number[i] = '1';
- continue;
- }
- }
- for (short i = 0; i < length; i++) { // from 1010 to 0101
- if (number[i] == '1') {
- number[i] = '0';
- }
- else {
- number[i] = '1';
- }
- }
- number[0] = '1';
- }
- return number;
- }
- char *The_Sum(char *&number_1, char *&number_2) {
- From_Natural_form_to_Additional_form(number_1);
- From_Natural_form_to_Additional_form(number_2);
- char *add_result = new char[length + 1];
- short memory = 0;
- for (short i = length - 1; i >= 0; i--) {
- if (number_1[i] + number_2[i] - '0' - '0' + memory == 2) {
- memory = 1;
- add_result[i] = '0';
- }
- else if (number_1[i] + number_2[i] - '0' + memory == '3') {
- memory = 1;
- add_result[i] = '1';
- }
- else {
- add_result[i] = number_1[i] + number_2[i] - '0' + memory;
- memory = 0;
- }
- }
- return From_Additional_form_to_Direct_form(add_result);
- }
- char *From_Natural_form_to_Additional_form(char *&number) {
- short delta = 0;
- for (short i = length - 1; number[i] == '\0'; i--, delta++) {
- }
- int z = -1;
- if (number[0] == '-') {
- number[0] = '1';
- z = 0;
- }
- for (short i = length - 1 - delta; i > z; i--) {
- number[i + delta] = number[i];
- number[i] = '0';
- }
- for (int i = 0; i < length; i++) {
- if (number[i] == '\0') {
- number[i] = '0';
- }
- }
- if (number[0] == '1') {
- for (short i = 0; i < length; i++) { // from 1010 to 0101
- if (number[i] == '1') {
- number[i] = '0';
- }
- else {
- number[i] = '1';
- }
- }
- number[0] = '1';
- for (short i = length - 1; i > 0; i--) { // +1 (from 10101 to 10110)
- if (number[i] == '0') {
- number[i] = '1';
- break;
- }
- else {
- number[i] = '0';
- continue;
- }
- }
- }
- return number;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement