using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FindBaseNumber
{
class Program
{
public static void Main(string[] args)
{
//=======================================================================================
int inputBNum, connum = 0, number = 0;
string result = "", numberhex = "";
Console.WriteLine("---| Program Calculator[Binary,Octal,Decimal and Hexadecimal]|---");
//================================== รับค่าตัวเลข ==================================
do
{
Console.WriteLine("\nPlease input number for find base number? [Use numbers 2,8,10 and 16]");
Console.Write("\nInput first base number : ");
inputBNum = int.Parse(Console.ReadLine());
if (inputBNum == 2)
{
Console.Write("Convent to...\nInput base number : ");
connum = int.Parse(Console.ReadLine());
}
else if (inputBNum == 8)
{
Console.Write("Convent to...\nInput base number : ");
connum = int.Parse(Console.ReadLine());
}
else if (inputBNum == 10)
{
Console.Write("Convent to...\nInput base number : ");
connum = int.Parse(Console.ReadLine());
}
else if (inputBNum == 16)
{
Console.Write("Convent to...\nInput base number : ");
connum = int.Parse(Console.ReadLine());
}
else
{
Console.WriteLine("Error! Please input the correct number,Try again.");
}
} while (connum != 2 && connum != 8 && connum != 10 && connum != 16);
//================================== รับค่าข้อมูลที่ต้องการจะแปลงเป็นเลขฐานอื่นๆ ==================================
if (inputBNum == 16)
{
Console.Write("Input number to calculation : ");
numberhex = Console.ReadLine();
}
else
{
Console.Write("Input number to calculation : ");
number = int.Parse(Console.ReadLine());
}
//================================== ค้นหาว่าตัวเลขอยู่ใน case อะไร สำหรับใช้ในการไปคำนวนในฟังก์ชั่น ==================================
if (inputBNum == 2 && connum == 8)
result = FindBintoOct(inputBNum, number);
else if (inputBNum == 2 && connum == 10)
result = FindBintoDec(inputBNum, number);
else if (inputBNum == 2 && connum == 16)
result = FindBintoHex(inputBNum, number);
else if (inputBNum == 8 && connum == 2)
result = FindOcttoBin(inputBNum, number);
else if (inputBNum == 8 && connum == 10)
result = FindOcttoDec(inputBNum,number);
else if (inputBNum == 8 && connum == 16)
result = FindOcttoHex(inputBNum, number);
else if (inputBNum == 10 && connum == 2)
result = FindDectoBin(number);
else if (inputBNum == 10 && connum == 8)
result = FindDectoOct(number);
else if (inputBNum == 10 && connum == 16)
result = FindDectoHex(number);
else if (inputBNum == 16 && connum == 2)
result = FindHextoBin(inputBNum, numberhex);
else if (inputBNum == 16 && connum == 8)
result = FindHextoOct(inputBNum, numberhex);
else if (inputBNum == 16 && connum == 10)
result = FindHextoDec(inputBNum, numberhex);
//================================== แสดงผลการแปลงเลขฐาน ==================================
if(numberhex != "")
Console.WriteLine("\n\t---| Result |---\nBase Number : {0} Convert to {1} \nResult :\t{2} = {3}\n", inputBNum, connum, numberhex, result);
else
Console.WriteLine("\n\t---| Result |---\nBase Number : {0} Convert to {1} \nResult :\t{2} = {3}\n", inputBNum, connum, number, result);
PoweredBydEMolizH();
}
//=======================================================================================
//================================= ฟังก์ชั่นการคำนวณหาเลขฐาน =================================
//=======================================================================================
private static string FindBintoOct(int inputBNum , int number)
{
string bintodec = FindDec(inputBNum, number);
int dectobin = int.Parse(bintodec);
string result = FindDectoOct(dectobin);
return result;
}
private static string FindBintoDec(int inputBNum, int number)
{
string result = FindDec(inputBNum, number);
return result;
}
private static string FindBintoHex(int inputBNum, int number)
{
string bintodec = FindDec(inputBNum, number);
int dectohex = int.Parse(bintodec);
string result = FindDectoHex(dectohex);
return result;
}
private static string FindOcttoBin(int inputBNum, int number)
{
string octtodec = FindDec(inputBNum, number);
int dectobin = int.Parse(octtodec);
string result = FindDectoBin(dectobin);
return result;
}
private static string FindOcttoDec(int inputBNum,int number)
{
string result = FindDec(inputBNum, number);
return result;
}
private static string FindOcttoHex(int inputBNum, int number)
{
string octtodec = FindDec(inputBNum, number);
int dectohex = int.Parse(octtodec);
string result = FindDectoHex(dectohex);
return result;
}
private static string FindDectoBin(int number)
{
int Numden = number;
string result = "";
do
{
if (Numden >= 2)
result = (Numden % 2) + result;
else
result = Numden + result;
Numden /= 2;
} while (Numden > 0);
return result;
}
private static string FindDectoOct(int number)
{
int Numden = number;
string result = "";
do
{
if (Numden >= 8)
result = (Numden % 8) + result;
else
result = Numden + result;
Numden /= 8;
} while (Numden > 0);
return result;
}
private static string FindDectoHex(int number)
{
int Numden = number;
string result = "";
do
{
if (Numden >= 16)
{
if (Numden % 16 == 10)
result = "A" + result;
else if (Numden % 16 == 11)
result = "B" + result;
else if (Numden % 16 == 12)
result = "C" + result;
else if (Numden % 16 == 13)
result = "D" + result;
else if (Numden % 16 == 14)
result = "E" + result;
else if (Numden % 16 == 15)
result = "F" + result;
else
result = (Numden % 16) + result;
}
else
result = Numden + result;
Numden /= 16;
} while (Numden > 0);
return result;
}
private static string FindHextoBin(int inputBNum, string numberhex)
{
string hextodec = FindHextoDec(inputBNum, numberhex);
int dectobin = int.Parse(hextodec);
string result = FindDectoBin(dectobin);
return result;
}
private static string FindHextoOct(int inputBNum, string numberhex)
{
string hextodec = FindHextoDec(inputBNum, numberhex);
int dectoOct = int.Parse(hextodec);
string result = FindDectoOct(dectoOct);
return result;
}
private static string FindHextoDec(int inputBNum, string numberhex)
{
string defnum = numberhex;
int val = 0, j = 0;
for (int i = (defnum.Length - 1); i >= 0; i--, j++)
{
if (defnum.Substring(i, 1) == "A" || defnum.Substring(i, 1) == "a")
val += 10 * Convert.ToInt32(Math.Pow(inputBNum, j));
else if (defnum.Substring(i, 1) == "B" || defnum.Substring(i, 1) == "b")
val += 11 * Convert.ToInt32(Math.Pow(inputBNum, j));
else if (defnum.Substring(i, 1) == "C" || defnum.Substring(i, 1) == "c")
val += 12 * Convert.ToInt32(Math.Pow(inputBNum, j));
else if (defnum.Substring(i, 1) == "E" || defnum.Substring(i, 1) == "d")
val += 13 * Convert.ToInt32(Math.Pow(inputBNum, j));
else if (defnum.Substring(i, 1) == "E" || defnum.Substring(i, 1) == "e")
val += 14 * Convert.ToInt32(Math.Pow(inputBNum, j));
else if (defnum.Substring(i, 1) == "F" || defnum.Substring(i, 1) == "F")
val += 15 * Convert.ToInt32(Math.Pow(inputBNum, j));
else
val += Convert.ToInt32(defnum.Substring(i, 1)) * Convert.ToInt32(Math.Pow(inputBNum, j));
}
string result = Convert.ToString(val);
return result;
}
private static string FindDec(int inputBNum, int number)
{
string defnum = Convert.ToString(number);
int val = 0, j = 0;
for (int i = (defnum.Length - 1); i >= 0; i--, j++)
{
val += Convert.ToInt32(defnum.Substring(i, 1)) * Convert.ToInt32(Math.Pow(inputBNum, j));
}
string result = Convert.ToString(val);
return result;
}
public static void PoweredBydEMolizH()
{
Console.WriteLine("\nPowered By dEMolizH\nWebsite : WWW.GamerThai.COM\n");
}
//=======================================================================================
}
}
ขอดู form app หน่อยครับ ^^
ตอบลบทำไว้แต่ console ครับ
ลบถ้าทำ forms app ก็ปรับเปลี่ยนนิดหน่อยเองนะครับ โครงสร้างก็เหมือนกันเลย
ขอบคุณครับ
ตอบลบ