Проверьте код, пожалуйста =)
Добрый день! Напишите программу, которая преобразует введенную сумму в фунтах стерлингов в сумму в рублях. Выводите целую часть суммы и отдельно остаток в копейках (один фунт = 149 рублей, в одном фунте 100 пенсов).. С#. Я написал, решил спросить вас, может как то упростить посоветуете, в общем проверьте на эффективность и удобство
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace console_2
{
class Program
{
static void Main(string[] args)
{
begin:;
Console.WriteLine("Введите сумму в ФУНТАХ:");
decimal F = Convert.ToDecimal(Console.ReadLine()); //вводим число, можно с остатком
if (F < 0) //если число отрицательная на этапе ввода
{
Console.WriteLine("Это отрицательное число! Попробуйте еще раз");
goto begin;
}
var F1 = F * 100; //преобразование вводимых фунтов в пенсы
var a = 149; //1 фунт - 149 рублей
decimal F2 = (F1 * a) / 100; // Перевод в рубли
Console.WriteLine("Рублей: " + (ulong)F2);
decimal F3 = (F1 * a) % 100; // Перевод в копейки
Console.WriteLine("Копеек: " + (uint)F3);
Console.WriteLine("Выйти? Да - Yes");
string c = Console.ReadLine();
if (c != "yes")
{
goto begin;
}
}
}
}
в целом норм, если не придираться к мелочам.
а что касаемо упрощения... ну я могу предложить такой вариант:
https://pastebin.com/rBdwr58g
using System;
class Program
{
const decimal POUND_VALUE_IN_RUBLES = 149.00M;
static void Main()
{
do
{
Console.Clear();
Console.Write("Введите сумму в ФУНТАХ: ");
Console.WriteLine(decimal.TryParse(Console.ReadLine(), out decimal F) && F >= 0
? $"Рублей: {F * POUND_VALUE_IN_RUBLES:N0}\r\nКопеек: {F * POUND_VALUE_IN_RUBLES * 100 % 100:N0}"
:"Не верный формат данных! " + (F < 0 ? "Используйте положительные числа!" : "Строка не является числом!"));
Console.WriteLine("Y - Выход\tAnyKey - Повторить");
}
while (Console.ReadKey(true).Key != ConsoleKey.Y);
}
}
думаю он гораздо проще твоего будет и плюсом исключает пару возможностей крашнуть программу)
PS