Перевод целых чисел в десятичную систему счисления - C#
Формулировка задачи:
Перевод целых чисел q -> 10.Дано целое число в системе счисления с основанием q, 2 ≤ q ≤ 16.
Найти его значение в 10-чной системе счисления.
Ввод
В первой строке – целое число q (основание системы счисления)
Во второй строке – число, представленное в q-чной системе счисления.
Вывод
Значение введенного числа в 10-чной системе счисления.
Например:
Ввод
10
123456
Вывод
123456
Ввод
7
66666
Вывод
16806
Ввод
16
FFFFF
Вывод
1048575
Вот мои наброски, не знаю как быть дальше? Подскажите пожалуйста.
using System; class Program { static int chisl(char a) { switch (a) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case 'A': return 10; case 'B': return 11; case 'C': return 12; case 'D': return 13; case 'E': return 14; case 'F': return 15; default: return -1; } }
Решение задачи: «Перевод целых чисел в десятичную систему счисления»
textual
Листинг программы
[CSHARP]namespace Schislenie { public partial class Form1 : Form { string bukv = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public Form1() { InitializeComponent(); numericUpDown1.Minimum = 2; numericUpDown1.Maximum = 25; numericUpDown1.Value = 10; numericUpDown2.Minimum = 2; numericUpDown2.Maximum = 25; numericUpDown2.Value = 10; button1.Enabled = false; } private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text.Length != 0) button1.Enabled = true; else button1.Enabled = false; } /// <summary> /// Переводит из деятичной системы счисления в систему счисления с основанием N /// </summary> /// <param name="number">Число, которое переводим </param> /// <param name="sys">Система счисления, в которую переводим</param> /// <returns>Возвращает переведенное число в строковом формате</returns> private string ToN(string number, string sys) { string newNum = ""; int num = Convert.ToInt32(number); int chast = Convert.ToInt32(number); ArrayList numTemp = new ArrayList(); while(chast>0) { chast = chast / Convert.ToInt32(sys); numTemp.Add(num - chast * Convert.ToInt32(sys)); num = chast; } int j; for (j=numTemp.Count-1; j >= 0; j--) newNum += newCh(numTemp[j].ToString(),"to"); return newNum; } /// <summary> /// Функция, заменяет буквы на числа и наоборот /// </summary> /// <param name="sym">Число, над которым нужно работать</param> /// <param name="otk">В какую сторону осуществляется действие относительно десятичной системы счисления</param> /// <returns>Возвращает букву, если числу соответствует буква и наоборот, иначе число</returns> string newCh(string sym,string otk) { string s = ""; if (otk == "to") { if (Convert.ToInt32(sym) > 10) s += bukv.Substring(Convert.ToInt32(sym) - 10, 1); else s += sym; } else if (otk == "from") { if (bukv.IndexOf(sym)==-1) s += sym; else s += (bukv.IndexOf(sym) + 10).ToString(); } return s; } /// <summary> /// Переводит системы счисления с основанием N в деятичную систему счисления /// </summary> /// <param name="number">Число, которое переводим </param> /// <param name="sys">Система счисления, из которой переводим</param> /// <returns>Возвращает переведенное число в строковом формате</returns> private string FromN(string number, string sys) { int newNum = 0; string temp = ""; int t; int i; for (i = 0; i < number.Length; i++) { temp = ""; temp += newCh(number.Substring(i, 1), "from"); t=(int)Math.Pow(Convert.ToDouble(sys),Convert.ToDouble(number.Length-(i+1))); newNum += Convert.ToInt32(temp) * t; } return newNum.ToString(); } private string FromTo(string number, string sysN, string sysK) { string temp=""; temp=FromN(number, sysN); temp = ToN(temp, sysK); return temp; } private void button1_Click(object sender, EventArgs e) { if(numericUpDown1.Value==10 && numericUpDown2.Value!=10) textBox2.Text = ToN(textBox1.Text, numericUpDown2.Value.ToString()); else if (numericUpDown2.Value == 10 && numericUpDown1.Value != 10) textBox2.Text=FromN(textBox1.Text, numericUpDown1.Value.ToString()); else if (numericUpDown2.Value != 10 && numericUpDown1.Value != 10) textBox2.Text = FromTo(textBox1.Text, numericUpDown1.Value.ToString(), numericUpDown2.Value.ToString()); button1.Enabled = false; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д