Перевод целых чисел в десятичную систему счисления - C#

Узнай цену своей работы

Формулировка задачи:

Перевод целых чисел q -> 10.Дано целое число в системе счисления с основанием q, 2 ≤ q ≤ 16. Найти его значение в 10-чной системе счисления. Ввод В первой строке – целое число q (основание системы счисления) Во второй строке – число, представленное в q-чной системе счисления. Вывод Значение введенного числа в 10-чной системе счисления. Например: Ввод 10 123456 Вывод 123456 Ввод 7 66666 Вывод 16806 Ввод 16 FFFFF Вывод 1048575 Вот мои наброски, не знаю как быть дальше? Подскажите пожалуйста.
Листинг программы
  1. using System;
  2. class Program
  3. {
  4. static int chisl(char a)
  5. {
  6. switch (a)
  7. {
  8. case '0': return 0;
  9. case '1': return 1;
  10. case '2': return 2;
  11. case '3': return 3;
  12. case '4': return 4;
  13. case '5': return 5;
  14. case '6': return 6;
  15. case '7': return 7;
  16. case '8': return 8;
  17. case '9': return 9;
  18. case 'A': return 10;
  19. case 'B': return 11;
  20. case 'C': return 12;
  21. case 'D': return 13;
  22. case 'E': return 14;
  23. case 'F': return 15;
  24. default: return -1;
  25. }
  26. }

Решение задачи: «Перевод целых чисел в десятичную систему счисления»

textual
Листинг программы
  1. [CSHARP]namespace Schislenie
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         string bukv = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  6.         public Form1()
  7.         {
  8.             InitializeComponent();
  9.             numericUpDown1.Minimum = 2;
  10.             numericUpDown1.Maximum = 25;
  11.             numericUpDown1.Value = 10;
  12.             numericUpDown2.Minimum = 2;
  13.             numericUpDown2.Maximum = 25;
  14.             numericUpDown2.Value = 10;
  15.             button1.Enabled = false;
  16.         }
  17.  
  18.         private void textBox1_TextChanged(object sender, EventArgs e)
  19.         {
  20.             if (textBox1.Text.Length != 0)
  21.                 button1.Enabled = true;
  22.             else
  23.                 button1.Enabled = false;
  24.         }
  25.         /// <summary>
  26.         /// Переводит из деятичной системы счисления в систему счисления с основанием N
  27.         /// </summary>
  28.         /// <param name="number">Число, которое переводим </param>
  29.         /// <param name="sys">Система счисления, в которую переводим</param>
  30.         /// <returns>Возвращает переведенное число в строковом формате</returns>
  31.         private string ToN(string number, string sys)
  32.         {
  33.             string newNum = "";
  34.             int num = Convert.ToInt32(number);
  35.             int chast = Convert.ToInt32(number);
  36.             ArrayList numTemp = new ArrayList();
  37.             while(chast>0)
  38.             {
  39.                 chast = chast / Convert.ToInt32(sys);
  40.                 numTemp.Add(num - chast * Convert.ToInt32(sys));
  41.                 num = chast;
  42.             }
  43.             int j;
  44.             for (j=numTemp.Count-1; j >= 0; j--)
  45.                 newNum += newCh(numTemp[j].ToString(),"to");
  46.             return newNum;
  47.         }
  48.         /// <summary>
  49.         /// Функция, заменяет буквы на числа и наоборот
  50.         /// </summary>
  51.         /// <param name="sym">Число, над которым нужно работать</param>
  52.         /// <param name="otk">В какую сторону осуществляется действие относительно десятичной системы счисления</param>
  53.         /// <returns>Возвращает букву, если числу соответствует буква и наоборот, иначе число</returns>
  54.         string newCh(string sym,string otk)
  55.         {
  56.             string s = "";
  57.             if (otk == "to")
  58.             {
  59.                 if (Convert.ToInt32(sym) > 10)
  60.                     s += bukv.Substring(Convert.ToInt32(sym) - 10, 1);
  61.                 else
  62.                     s += sym;
  63.             }
  64.             else if (otk == "from")
  65.             {
  66.                 if (bukv.IndexOf(sym)==-1)
  67.                     s += sym;
  68.                 else
  69.                     s += (bukv.IndexOf(sym) + 10).ToString();
  70.             }
  71.             return s;
  72.         }
  73.  
  74.  
  75.         /// <summary>
  76.         /// Переводит системы счисления с основанием N в деятичную систему счисления
  77.         /// </summary>
  78.         /// <param name="number">Число, которое переводим </param>
  79.         /// <param name="sys">Система счисления, из которой переводим</param>
  80.         /// <returns>Возвращает переведенное число в строковом формате</returns>
  81.         private string FromN(string number, string sys)
  82.         {
  83.             int newNum = 0;
  84.             string temp = "";
  85.             int t;
  86.             int i;
  87.             for (i = 0; i < number.Length; i++)
  88.             {
  89.                 temp = "";
  90.                 temp += newCh(number.Substring(i, 1), "from");
  91.                 t=(int)Math.Pow(Convert.ToDouble(sys),Convert.ToDouble(number.Length-(i+1)));
  92.                 newNum += Convert.ToInt32(temp) * t;
  93.             }
  94.             return newNum.ToString();
  95.         }
  96.         private string FromTo(string number, string sysN, string sysK)
  97.         {
  98.             string temp="";
  99.             temp=FromN(number, sysN);
  100.             temp = ToN(temp, sysK);
  101.             return temp;
  102.         }
  103.  
  104.         private void button1_Click(object sender, EventArgs e)
  105.         {
  106.             if(numericUpDown1.Value==10 && numericUpDown2.Value!=10)
  107.                 textBox2.Text = ToN(textBox1.Text, numericUpDown2.Value.ToString());
  108.             else if (numericUpDown2.Value == 10 && numericUpDown1.Value != 10)
  109.                 textBox2.Text=FromN(textBox1.Text, numericUpDown1.Value.ToString());
  110.             else if (numericUpDown2.Value != 10 && numericUpDown1.Value != 10)
  111.                 textBox2.Text = FromTo(textBox1.Text, numericUpDown1.Value.ToString(), numericUpDown2.Value.ToString());
  112.             button1.Enabled = false;
  113.         }
  114.     }
  115. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы