- 175
- 294
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Подобие калькулятора 5ой системы счисления
Код:
using System;
namespace Kakylyator
{
class Program
{
const int BASE = 5;
// Не трогайте код, он и так на последнем дыхании
// Не трогайте код, он и так на последнем дыхании
static void Main(string[] args)
{
while (true)
{
try
{
Console.Write("Введите первое число: ");
string num1_str = Console.ReadLine();
Console.Write("Введите второе число: ");
string num2_str = Console.ReadLine();
Console.Write("Введите операцию(действие): ");
string operand = Console.ReadLine();
double num1_dec = ConvertToDec(num1_str);
double num2_dec = ConvertToDec(num2_str);
double result_dec = PerformOperation(num1_dec, num2_dec, operand);
string result_str = ConvertToBase(result_dec);
Console.WriteLine($"Результат: {result_str}");
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
}
catch (OverflowException)
{
Console.WriteLine("Макс.разряд");
}
Console.WriteLine();
}
}
static double ConvertToDec(string num_str)
{
bool isNegative = false;
if (num_str[0] == '-')
{
isNegative = true;
num_str = num_str.Substring(1);
}
double num = 0;
for (int i = num_str.Length - 1; i >= 0; i--)
{
if (!char.IsDigit(num_str[i]) || (int)char.GetNumericValue(num_str[i]) >= BASE)
{
throw new ArgumentException($"Символ недопускается {i + 1}");
}
int digit = (int)char.GetNumericValue(num_str[i]);
num += digit * Math.Pow(BASE, num_str.Length - i - 1);
}
if (isNegative)
{
num = -num;
}
return num;
}
static string ConvertToBase(double num_dec)
{
bool isNegative = false;
if (num_dec < 0)
{
isNegative = true;
num_dec = -num_dec;
}
if (num_dec == 0)
{
return "0";
}
string digits = "";
while (num_dec > 0)
{
int digit = (int)(num_dec % BASE);
digits += digit.ToString();
num_dec = Math.Floor(num_dec / BASE);
}
if (isNegative)
{
digits += "-";
}
return new string(digits.Reverse().ToArray());
}
static double PerformOperation(double num1_dec, double num2_dec, string operand)
{
if (operand == "+")
{
return num1_dec + num2_dec;
}
else if (operand == "-")
{
return num1_dec - num2_dec;
}
else if (operand == "*")
{
return num1_dec * num2_dec;
}
else if (operand == "/")
{
if (num2_dec == 0)
{
throw new ArgumentException("Ноль");
Console.Write("Возможно все сломается :)");
}
return num1_dec / num2_dec;
}
else
{
throw new ArgumentException("Сломались//Нельзя");
}
}
}
}
Последнее редактирование: