![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.04.2014
Сообщений: 18
|
![]()
Разработать программу побитового сложения двух целых положительных чисел.Дополнительное условие: Числа задаются в 10 сист. счисл. , выполнить проверку, что они являются целыми и положительными, преобразовать эти числа в двоичное числов количество разрядов 8 бит, обеспечить проверку на переполнение. Выполнить операцию побитового сложения, проверить результат на переполнение Преобразовать полученное число в 10 сист. счисл. , выводить как промежуточные так и конечные результаты.
#include <iostream>; #include <string>; #include <conio.h>; using namespace std; const int RANK = 8; //Шаг 1. string FromDecimalToBinary(string, int); string FromBinaryToDecimal(string); string SumBinary(string, string, int); bool ifDecimalValid(string); int main() { string Value1, Value2, SumValue; //Шаг 2. setlocale(LC_ALL, "Russian"); while(true) { cout << "Введите первое слогаемое: "; cin >> Value1; //Шаг 3. if (!(ifDecimalValid(Value1))) {cout << "Число должно быть положительное и целое! " << endl; continue;} //Шаг 4. Value1 = FromDecimalToBinary(Value1, RANK); //Шаг 5. if (Value1 == "ERROR") {cout << "Данное число в двоичном представленни займет больше " << RANK << " разрядов! " << endl; continue;} //Шаг 6. break; } cout << "Первое слогаемое в двоичном представленни: " << Value1 << endl; //Шаг 7. while(true) { cout << "Введите второе слогаемое: "; cin >> Value2; //Шаг 8. if (!(ifDecimalValid(Value2))) {cout << "Число должно быть положительное и целое! " << endl; continue;} //Шаг 9. Value2 = FromDecimalToBinary(Value2, RANK); //Шаг 10. if (Value2 == "ERROR") {cout << "Данное число в двоичном представленни займет больше " << RANK << " разрядов! " << endl; continue;} //Шаг 11. break; } cout << "Второе слогаемое в двоичном представленни: " << Value2 << endl; //Шаг 12. SumValue = SumBinary(Value1, Value2, RANK); //Шаг 13. if (SumValue == "ERROR") //Шаг 14. { cout << "Сумму невозможно в двоичной системе счисления представить используя " << RANK << "разрядов" << endl; system("Pause"); return 0; } cout << "Сумма двух слогаемых в двоичной системе счеслении: " << SumValue << endl; //Шаг 15. SumValue = FromBinaryToDecimal(SumValue); //Шаг 16. cout << "Сумма двух слогаемых в десятичной системе счеслении: " << SumValue << endl; //Шаг 17. system("Pause"); return 0; } string FromDecimalToBinary(string value, int RANK) { string Binary; int Decimal = 0; for (int i = value.length()-1, grade = 1; i > -1; i--, grade *= 10) { Decimal = Decimal + (value[i] - '0')* grade; } for (; Decimal != 0; Decimal/=2) { Binary = char((Decimal%2) + '0') + Binary; } if (Binary.length() > RANK) { return "ERROR"; } for (int i = Binary.length(); i < RANK; i++) { Binary = '0' + Binary; } return Binary; } string FromBinaryToDecimal(string value) { string Result; int Decimal = 0; for (int i = value.length()-1, grade = 1; i > -1; i--, grade *= 2) { Decimal = Decimal + (value[i] - '0')*grade; } while (Decimal != 0) { Result = char((Decimal - (Decimal / 10) * 10) + '0') + Result; Decimal /= 10; } return Result; } string SumBinary(string v1, string v2, int RANK) { string Sum, some, flag = "0"; for (int i = RANK-1; i > -1; i--) { some = string(flag) + v1[i] + v2[i]; if ((some == "010") || (some == "001") || (some == "100")) { Sum = '1' + Sum; flag = '0'; continue; } if ((some == "011") || (some == "101") || (some == "110")) { Sum = '0' + Sum; flag = '1'; continue; } if (some == "111") { Sum = '1' + Sum; flag = '1'; continue; } if (some == "000") { Sum = '0' + Sum; flag = '0'; continue; } } if (flag == "1") { return "ERROR"; } return Sum; } bool ifDecimalValid(string value) { for (int i = value.length() - 1; i > -1; i--) { if((value[i] <'0') && (value[i] > '9')) { return false; } } return true; } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
если кто может переведите программу из pascal в C# | medved2800 | Помощь студентам | 0 | 14.02.2013 18:23 |
переведите с Паскаля на си++ | Pomogite_pls | Общие вопросы C/C++ | 0 | 12.02.2012 21:20 |
переведите на С++ | zinulka | Общие вопросы C/C++ | 3 | 28.06.2011 23:05 |
переведите на С++ из паскаля | Юляшко | Общие вопросы C/C++ | 2 | 09.05.2010 20:32 |
Переведите пожалуйста из Pascal в C++ | KamBall | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 25.05.2009 14:57 |