Перевод целых чисел в десятичную систему счисления - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д