Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Преобразование чисел из одной сс в другую


Автор: GRIENDERS 20.8.2010, 20:03
Пусть есть интерфейс

Код

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”



Строки, представляющие основание позиционной системы, содержат любые символы для предстваления цифры в порядке возрастания

Автор: jonie 21.8.2010, 10:45
Класс, реализующий этот интерфейс будет такой:
Код

class Converter : IConverter {
public string Convert(string value, string fromBase, string toBase)
{
 return "";
}
}

в чем вопрос?

Автор: ДобренькийПапаша 21.8.2010, 13:33
Не знаю что вам надо, но переводить из одной системы в другую можно так:
Код

int myVal=4;
string txt = Convert.ToString(myVal, 2); //Возвратит 100
txt = Convert.ToString(myVal, 8); //Возвратит 100
txt = Convert.ToString(myVal, 16); //Возвратит 100


Автор: GRIENDERS 21.8.2010, 20:42
Все написано в первом топике

Добавлено через 33 секунды
Цитата(jonie @ 21.8.2010,  10:45)
Класс, реализующий этот интерфейс будет такой:
Код

class Converter : IConverter {
public string Convert(string value, string fromBase, string toBase)
{
 return "";
}
}

в чем вопрос?

как реализовать?

Автор: Экскалупатор 21.8.2010, 21:37
Цитата(GRIENDERS @  21.8.2010,  19:42 Найти цитируемый пост)
как реализовать? 

не понимаю вопроса. 
наследуешь этот интерфейс в классе, и реализуешь там те методы которые описаны в интерфейсе. чего не понятно то? 
или тебе нужна конкретная реализация метода перевода чисел?

Автор: GRIENDERS 22.8.2010, 00:49
да, конкретная реализация

Автор: Экскалупатор 22.8.2010, 01:05
хм. ну так так и писать надо было сразу: хочу метод перевода из одной СС в другую, а то интерфейсы, классы, при чем тут все это?..

Цитата(GRIENDERS @  20.8.2010,  19:03 Найти цитируемый пост)
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”


можно ли узнать откуда эти данные берутся? GSAK - это в какой СС? почему оно равно 147 в СС с основанием 10?

Автор: Экскалупатор 22.8.2010, 01:51
вообще информации по этому поводу очень много, так что составить алгоритм не должно вызывать трудностей. 
принцип можно почитать к примеру http://inf.e-alekseev.ru/text/Schisl_perevod.html или http://ru.wikibooks.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F.

правда в данном случае видно хочется переводить в какие то непонятные значения. так что если сильно хочется то предоставь информацию о том как они соотносятся между собой.

Автор: GRIENDERS 22.8.2010, 14:46
я ее уже видел

Автор: Экскалупатор 22.8.2010, 16:55
Цитата(Экскалупатор @  22.8.2010,  00:05 Найти цитируемый пост)


можно ли узнать откуда эти данные берутся? GSAK - это в какой СС? почему оно равно 147 в СС с основанием 10? 


расскажи подробнее что тебе нужно получить, я думаю что у тебя какой то свой вариант представления системы счисления, но вот какой я пока не понял. если расскажешь то наверняка это поможет в реализации этого метода.

Добавлено через 2 минуты и 25 секунд
если тебе кажется что того примера, который ты привел в первом посте, достаточно для того что бы понять как оно у тебя работает то ты ошибаешься, в моем представлении система счисления с основанием 4 содержит цифры 0,1,2,3. откуда берутся значения A,S,G,K? какая между ними связь?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)