Помогите исправить ошибку в коде. Язык С. Переделать по
Дата публикации:

Помогите исправить ошибку в коде. Язык С. Переделать по


Помогите исправить ошибку в коде. Язык С. Переделать по подсказке#include <locale.h> #include <stdio.h> // Функция для преобразования числа из десятичной системы в произвольную систему счисления void decimalToBase(int num, int base) { int remainder; int result[100]; int i = 0; while (num > 0) { remainder = num % base; result[i] = remainder; num = num / base; i++; } printf("Число в системе счисления с основанием %d: ", base); for (int j = i - 1; j >= 0; j--) { printf("%d", result[j]); } printf("\n"); } // Функция для преобразования числа из заданной системы счисления в десятичную систему int baseToDecimal(int num, int base) { int result = 0; int multiplier = 1; while (num > 0) { int digit = num % 10; result += digit multiplier; multiplier = base; num = num / 10; } return result; } // Функция для сложения чисел в произвольной системе счисления int addNumbers(int num1, int num2, int base) { int carry = 0; int result = 0; int multiplier = 1; while (num1 > 0 || num2 > 0) { int digit1 = num1 % 10; int digit2 = num2 % 10; int sum = digit1 + digit2 + carry; carry = sum / base; int digit = sum % base; result += digit multiplier; multiplier = 10; num1 = num1 / 10; num2 = num2 / 10; } if (carry > 0) { result += carry * multiplier; } return result; } int main() { int num1, num2, base; setlocale(LC_ALL, "Russian"); printf("Введите первое число: "); scanf_s("%d", &num1); printf("Введите второе число: "); scanf_s("%d", &num2); printf("Введите основание системы счисления (от 2 до 9): "); scanf_s("%d", &base); // Преобразование первого числа в заданную систему счисления decimalToBase(num1, base); // Преобразование второго числа в заданную систему счисления decimalToBase(num2, base); // Выполнение операции сложения в произвольной системе счисления int sum = addNumbers(num1, num2, base); // Преобразование результата в десятичную систему счисления int decimalSum = baseToDecimal(sum, base); printf("Результат сложения: %d\n", decimalSum); return 0; } Подсказка: Все числа хранятся в компе в БИНАРНОМ виде. И что ты их можешь распечатывать или хранить как массив чисел (то есть цифр в этой системе) - это все равно хранение в бинарном виде. Представлять мы можем число в printf как десятичное по формату %d, как восьмеричное по формату %o и как шестнадцетиричное по формату %h. Это лишь представления. К хранению вообще никакого отношения не имеют.

include

include

void decimalToBase(int num, int base) {
int remainder;
int result[100];
int i = 0;
while (num > 0) {
remainder = num % base;
result[i] = remainder;
num = num / base;
i++;
}
printf("Число в системе счисления с основанием %d: ", base);
for (int j = i - 1; j >= 0; j--) {
printf("%d", result[j]);
}
printf("\n"); }

int baseToDecimal(int num, int base) {
int result = 0;
int multiplier = 1;
while (num > 0) {
int digit = num % 10;
result += digit multiplier;
multiplier
= base;
num = num / 10;
}
return result; }

int addNumbers(int num1, int num2, int base) {
int carry = 0;
int result = 0;
int multiplier = 1;
while (num1 > 0 || num2 > 0) {
int digit1 = num1 % 10;
int digit2 = num2 % 10;
int sum = digit1 + digit2 + carry;
carry = sum / base;
int digit = sum % base;
result += digit multiplier;
multiplier
= 10;
num1 = num1 / 10;
num2 = num2 / 10;
}
if (carry > 0) {
result += carry * multiplier;
}
return result; }

int main() {
int num1, num2, base;
setlocale(LC_ALL, "Russian");
printf("Введите первое число: ");
scanf("%d", &num1);
printf("Введите второе число: ");
scanf("%d", &num2);
printf("Введите основание системы счисления (от 2 до 9): ");
scanf("%d", &base);
decimalToBase(num1, base);
decimalToBase(num2, base);
int sum = addNumbers(num1, num2, base);
int decimalSum = baseToDecimal(sum, base);
printf("Результат сложения: %d\n", decimalSum);
return 0; }