Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 16:15   #1
lixod96
Пользователь
 
Регистрация: 23.04.2014
Сообщений: 18
Восклицание Можно ли перевести этот код с С++ на Pascal?

Вот задание:
программа переводит два заданных числа из десятичной системы счисления в двоичную, поразрядно суммирует их, и переводит обратно в десятичную систему счисления при этом выводя все промежуточные результаты. Числа при переводе в двоичную систему счисления должны иметь не больше восьми разрядов.
Вот код С++

#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;
}
lixod96 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На каком языке этот код и можно ли его переделать? thedoctor Общие вопросы C/C++ 8 11.01.2014 14:18
Перевести код с C++ в Pascal BloodyBlade Помощь студентам 7 20.05.2012 20:24
Перевести код с Pascal на C++ Aaaaaa111 Помощь студентам 1 22.02.2012 14:28
перевести код с Pascal на C++ panic_a Помощь студентам 2 22.12.2010 00:37
Перевести код с Pascal в C++ gigaman Общие вопросы C/C++ 1 26.03.2008 12:18