C/C++

Помогите пожалуйста, написать программу в С++

Написать программу по переводу дробного числа из системы счисления с основание Р в систему исчисления с основанием Q
Конечно, вот пример кода на C++:


#include <iostream>
#include <cmath>

using namespace std;

string convert(int decimalNumber, int base) {
string result = "";
while(decimalNumber > 0) {
int remainder = decimalNumber % base;
result = to_string(remainder) + result;
decimalNumber /= base;
}
return result;
}

int main() {
int decimalNumber, baseFrom, baseTo;
cout << "Enter decimal number: ";
cin >> decimalNumber;
cout << "Enter base from: ";
cin >> baseFrom;
cout << "Enter base to: ";
cin >> baseTo;
int integerPart = decimalNumber / baseFrom;
double fractionalPart = (double)decimalNumber / baseFrom - integerPart;
string result = convert(integerPart, baseTo);
if(fractionalPart > 0) {
result += ".";
for(int i = 0; i < 6; i++) {
fractionalPart *= baseTo;
int wholePart = (int)fractionalPart;
result += to_string(wholePart);
fractionalPart -= wholePart;
}
}
cout << "Result: " << result << endl;
return 0;
}


Пример работы программы:

Enter decimal number: 23
Enter base from: 10
Enter base to: 2
Result: 10111

Enter decimal number: 11
Enter base from: 10
Enter base to: 3
Result: 102

Enter decimal number: 0.25
Enter base from: 10
Enter base to: 2
Result: 0.01


Для перевода дробной части в другую систему счисления используется алгоритм последовательного умножения десятичной дроби на основание новой системы счисления и отбрасывания целой части до достижения необходимой точности. В приведённом примере используется точность до 6 знаков после запятой, что можно изменить на своё усмотрение.
Николай Ельцов
Николай Ельцов
1 111
Лучший ответ
●●● Сгенерировано нейросетью ●●●

Вот пример программы на C++, которая может перевести дробное число из системы счисления с основанием P в систему счисления с основанием Q:
 #include  
#include
#include

using namespace std;

int main() {
int P, Q;
string num;
cout > P;
cout > num;
cout > Q;

int integerPart = stoi(num.substr(0, num.find('.')));
string fractionalPart = num.substr(num.find('.') + 1);

string result = "";

// Перевод целой части числа
while (integerPart > 0) {
result += to_string(integerPart % Q);
integerPart /= Q;
}

reverse(result.begin(), result.end());

// Перевод дробной части числа
if (fractionalPart != "") {
result += '.';
double fractionalValue = 0.0;

for (int i = 0; i < fractionalPart.length(); i++) {
fractionalValue += (fractionalPart[i] - '0') * pow(P, -(i + 1));
}

while (fractionalValue > 0) {
fractionalValue *= Q;
int digit = floor(fractionalValue);
result += to_string(digit);
fractionalValue -= digit;
}

cout
Вот пример программы на C++ для преобразования дробного числа из базы P в базу Q:

```cpp
#include <иопоток>
использование пространства имен std;

строка convertFractionalNumber (int num, int baseFrom, int baseTo) {
результат строки = "";
int integerPart = num / baseFrom;
int FractionalPart = num % baseFrom;
в то время как (целая часть! = 0) {
результат = to_string(integerPart % baseTo) + результат;
целая часть /= baseTo;
}
результат += ".";
for (int i = 0; i < 5 && FractionalPart != 0; i++) {
дробная часть *= baseTo;
результат += to_string(fractionalPart/baseFrom);
дробная часть % = baseFrom;
}
вернуть результат;
}

интервал основной () {
число int, baseFrom, baseTo;
cout << "Введите дробное число: ";
цин >> число;
cout << "Введите базу системы счисления, из которой нужно преобразовать: ";
cin >> baseFrom;
cout << "Введите базу системы счисления, в которую нужно преобразовать: ";
cin >> baseTo;
cout << "Преобразованное число: " << convertFractionalNumber(num, baseFrom, baseTo) << endl;
вернуть 0;
}
```

В этой программе функция convertFractionalNumber принимает три аргумента:

- `num`: дробное число для преобразования
- `baseFrom`: основание системы счисления, из которой нужно преобразовать
- `baseTo`: основание системы счисления, в которую нужно преобразовать

Сначала функция разделяет целые и дробные части числа с помощью операторов `/` и `%` соответственно. Затем он преобразует целую часть в новое основание путем многократного деления на новое основание и объединения остатков. Он добавляет к результату десятичную точку, а затем преобразует дробную часть в новое основание путем многократного умножения на новое основание и добавления целой части результата к строке результата. Цикл останавливается после 5 итераций или когда дробная часть становится равной 0.

В основной функции пользователю предлагается ввести дробное число, основание системы счисления, из которой нужно преобразовать, и основание системы счисления, в которую следует преобразовать. С этими аргументами вызывается функция convertFractionalNumber, и результирующая строка выводится на консоль.
(**)Влад (**)
(**)Влад (**)
2 867