Разработать программу на языке С++ для решения следующей задачи.
Заданы два числа — А и B, первое в системе счисления с основанием
p, второе в системе счисления с основанием q. Вычислить значение С
по указанной формуле и вывести его на экран в десятичной системе
счисления и системе счисления с основанием r. При написании
программы использовать функции. Исходные данные для решения
задачи представлены в табл
Вот мой код,помогите , не получается перевести из 10 сс в 5 сс
и нужно еще чтоб с отрицательными числами работало .
помогите пожалуйста
Вот мой код : https://pastebin.com/MAeEQUEW
Вот код уже тут
#include <math.h>
#include <iostream>
using namespace std;
int counterA(int A)//считаем кол во цифр в числе
{
int countA = 0;
int maxstepenA;
while (A != 0)
{
countA = countA + 1;
A = A / 10;
}
maxstepenA = countA;
return maxstepenA;
}
int counterB(int B)//считаем кол во цифр в числе B
{
int countB = 0;
int maxstepenB;
while (B != 0)
{
countB = countB + 1;
B = B / 10;
}
maxstepenB = countB;
return maxstepenB;
}
int A10_B10(int A, int maxstepenA, int B, int maxstepenB)
{
int n = 0;
int x_1 = 0, x_2 = 0;
int chislo;
int C;
while (n <= maxstepenA)//число A в 10 сс
{
chislo = A % 10;
A = A / 10;
x_1 = chislo * pow(2, n) + x_1;
n = n + 1;
}
cout << "Число A в 10 системе счисления: " << x_1 << endl;
n = 0;
while (n <= maxstepenB)//число В в 10 сс
{
chislo = B % 10;
B = B / 10;
x_2 = chislo * pow(8, n) + x_2;
n = n + 1;
}
cout << "Число B в 10 системе счисления: " << x_2 << endl;
C = pow(x_2 - x_1, 2) + 2 * x_1;
return C;
}
void C_6()//доделать(не понимаю как перевести из 10 сс в 6 cc)
{
unsigned int C = 500;
int remains = 1, x;
while (remains != 0)
{
remains = C / 5;
C = C / 5;
cout << remains<<" ";
}
}
int main()
{
setlocale(LC_ALL, "RUS");
int A, B, maxstepenB, maxstepenA;
int C = 0;
cout << "Введите число A в двоичной системе счисления :";
cin >> A;
cout << "Введите число B в восьмиричной системе счисления :";
cin >> B;
maxstepenA = counterA(A);
maxstepenB = counterB(B);
C = A10_B10(A, maxstepenA, B, maxstepenB);//перевод из 3 сс в 10 сс числа А
//и числа B из 8 сс в 10 сс
cout << "C = " << C << endl;
C_6();
return 0;
}
C/C++
Помогите с программированием на с++
Мамин программист
// Преобразование строки str, содержащей запись числа по основанию radix, в число типа long
long str_to_long(string str, unsigned radix) {
if (str.length() == 0) { return 0; }
int i, neg;
long res = 0;
i = neg = str[0] == '-';
for (; i < str.length(); ++i) {
res = res * radix + str[i] - (str[i] <= '9' ? '0' : 'a' - 10);
}
return neg ? -res : res;
}
// Преобразование числа val типа long в строковую запись числа по основанию radix
string long_to_str(long val, unsigned radix) {
static const char *digit = "0123456789abcdefghijklmnopqrstuvwxyz";
string res = "";
int neg;
if (neg = val < 0) { val = - val; }
do { res = digit[val % radix] + res; } while (val /= radix);
return neg ? '-' + res : res;
}
Первой функцией преобразуешь строковую запись полученного с клавиатуры числа по заданному основанию в значение, понимаемое компьютером.
Второй функцией преобразуешь результат в строковую запись числа по заданному основанию.
long str_to_long(string str, unsigned radix) {
if (str.length() == 0) { return 0; }
int i, neg;
long res = 0;
i = neg = str[0] == '-';
for (; i < str.length(); ++i) {
res = res * radix + str[i] - (str[i] <= '9' ? '0' : 'a' - 10);
}
return neg ? -res : res;
}
// Преобразование числа val типа long в строковую запись числа по основанию radix
string long_to_str(long val, unsigned radix) {
static const char *digit = "0123456789abcdefghijklmnopqrstuvwxyz";
string res = "";
int neg;
if (neg = val < 0) { val = - val; }
do { res = digit[val % radix] + res; } while (val /= radix);
return neg ? '-' + res : res;
}
Первой функцией преобразуешь строковую запись полученного с клавиатуры числа по заданному основанию в значение, понимаемое компьютером.
Второй функцией преобразуешь результат в строковую запись числа по заданному основанию.
В коде не разобрался. Напишу про то, что понял из комментариев. Всё это делается совсем не так. Компьютер работает только в двоичной системе счисления. Поэтому числа из любой СС переводят в "просто числа", понятные компьютеру. С этими числами легко выполнить любые вычисления. Потом (если требуется) результат переводится в нужную СС. Обычно это десятичная СС, поскольку она привычна для людей. Для перевода в десятичную СС есть стандартные функции. Обычный вывод числа на экран автоматически переводит число в десятичную систему.
Похожие вопросы
- Помогите с программированием на C++
- Помогите с программированием
- Помогите с программированием на Си
- Помогите по программированию!!! с++ используя структуры
- ПОМОГИТЕ ПО ПРОГРАММИРОВАНИЮ!! C++
- Помогите с программированием на Си Работа с последовательностями элементов
- Кто поможешь сделать программирование на С++, задача с переводом СС?
- Помоги с программированием(С++)
- Здравствуйте помогите пожалуйста программирование c++
- Помогите с программированием на си