
Вопрос задан 27.07.2023 в 07:56.
Предмет Информатика.
Спрашивает Лубченков Иван.
Написать программу на C# Перевести число из системы счисления с основанием A в систему с
основанием B. Можно считать, что 2 ≤ A, B ≤ 10, а число дано в виде массива цифр.

Ответы на вопрос

Отвечает Галас Діма.
Код и результаты работы на скриншоте. Работать будет для A и B меньших или равных 62. Дальше просто символов не придумал.





Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для перевода числа из системы счисления с основанием A в систему с основанием B, можно использовать следующую C# программу. Программа принимает число в виде массива цифр, основание системы счисления A и основание системы счисления B, а затем выводит результат перевода в виде массива цифр.
csharpusing System;
namespace NumberBaseConversion
{
class Program
{
static void Main(string[] args)
{
// Примеры для тестирования программы
int[] number = { 1, 0, 1 }; // Число в системе счисления с основанием A (пример: число 101 в двоичной системе)
int A = 2; // Основание системы счисления A
int B = 8; // Основание системы счисления B
int[] result = ConvertBase(number, A, B);
// Выводим результат
Console.WriteLine($"Число {ArrayToString(number, A)} в системе с основанием {A} равно {ArrayToString(result, B)} в системе с основанием {B}.");
}
// Функция для перевода числа из системы счисления с основанием A в систему счисления с основанием B
static int[] ConvertBase(int[] number, int A, int B)
{
int base10 = ConvertToBase10(number, A);
int[] result = ConvertFromBase10(base10, B);
return result;
}
// Функция для перевода числа из A-ичной системы счисления в десятичную систему
static int ConvertToBase10(int[] number, int A)
{
int base10 = 0;
int power = 1;
for (int i = number.Length - 1; i >= 0; i--)
{
base10 += number[i] * power;
power *= A;
}
return base10;
}
// Функция для перевода числа из десятичной системы счисления в B-ичную систему
static int[] ConvertFromBase10(int base10, int B)
{
if (base10 == 0)
return new int[] { 0 };
int length = 0;
int temp = base10;
while (temp > 0)
{
temp /= B;
length++;
}
int[] result = new int[length];
int index = 0;
while (base10 > 0)
{
result[index] = base10 % B;
base10 /= B;
index++;
}
// Результат хранится в обратном порядке, поэтому переворачиваем массив
Array.Reverse(result);
return result;
}
// Функция для преобразования массива чисел в строку
static string ArrayToString(int[] arr, int @base)
{
string result = "";
foreach (int num in arr)
{
result += num.ToString();
}
return result + $" ({@base}-ичное)";
}
}
}
Примечание:
- В примере использованы числа 101 в двоичной системе (A = 2) и основание 8 для получения результата в восьмеричной системе счисления (B = 8). Вы можете изменить значение переменных
number
,A
иB
в методеMain
для тестирования с разными числами и основаниями систем счисления.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili