powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Преобразование чисел из одной сист счисления в другую
5 сообщений из 5, страница 1 из 1
Преобразование чисел из одной сист счисления в другую
    #36804193
Язык реализации не важен, пусть это будет C# или С++

Пусть есть интерфейс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
interface IConvert
{
/// <summary>
/// Преобразование числа из одной позицонной сисемы счисления в другую
   /// </summary>
/// <param name="value">строковое предствление числа в базовой сисеме счисления</param>
/// <param name="fromBase">строка представляющая основание базовой системы счисления</param>
   /// <param name="toBase">строка представлюща основание системы счиления в которую надо перевести</param>
/// <returns>строковое предстваление числа в новой системе счисления</returns>
/// <exception cref="ArgumentException">Исключание если конвертируемое значение не представлет из себя число в базовой сисеме счисления</exception>
string Convert(string value, string fromBase, string toBase);
  }




Как сделать класс, реализующий этот интерфейс?
авторValue = “GSAK”
fromBase = “A,S,G,K” – основание системы равно 4 (если записать арабскими то 0,1,2,3)
toBase= “0,1,2,3,4,5,6,7,8,9” – основние сисемы равно 10
return value = “147”


Строки, представляющие основание позиционной системы, содержат любые символы для предстваления цифры в порядке возрастания
...
Рейтинг: 0 / 0
Преобразование чисел из одной сист счисления в другую
    #36804340
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Метод задания алфавитов систем счисления мне не понравился, в чём прошу винить некрасивость.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
        class Converter : IConvert
        {
            int fromString(string value, string baseStr)
            {
                int[] values = new int[ 128 ];
                int n =  0 ;
                for (int i =  0 ; i < baseStr.Length; i++)
                    if (i %  2  ==  0 )
                    {
                        values[(byte)baseStr[i]] = n++;
                    }
                int ret =  0 ;
                for (int i =  0 ; i < value.Length; i++)
                {
                    ret = ret * n + values[(byte)value[i]];
                }
                return ret;
            }
            string toString(int value, string baseStr)
            {
                string ret = "";
                string[] alphabet = baseStr.Split(',');
                int n = alphabet.Length;
                do
                {
                    ret = alphabet[value % n] + ret;
                    value /= n;
                } while (value >  0 );
                return ret;
            }
            public string Convert(string value, string fromBase, string toBase)
            {
                return toString(fromString(value, fromBase), toBase);
            }
        }
...
Рейтинг: 0 / 0
Преобразование чисел из одной сист счисления в другую
    #36804421
junior idiot,

интересно, посмотрю, позже отпишусь.
...
Рейтинг: 0 / 0
Преобразование чисел из одной сист счисления в другую
    #36804629
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джеки Мхртчан,

Мне вот показалось (особо и не смотрел), что у junior idiotа предполагается односимвольный алфавит, что уже как бы накладывает ограничение величины базы количеством символов в юникоде. Имхо, с массивами правильнее, потому что при случае, когда юникод исчерпан, можно использовать "цифры" из нескольких символов, типа ..."qwe","qwr","qwt"... и т.д. .
...
Рейтинг: 0 / 0
Преобразование чисел из одной сист счисления в другую
    #36804766
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSerge,
односимвольный алфавит предполагается в условии задачи, в которой запись числа представлена строкой (а не массивом строк), то есть цифрой является ровно один символ.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Преобразование чисел из одной сист счисления в другую
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]