Управление форматированием вывода при вводе данных - C#

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

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

Вот такой код , ведется диалог с пользователем , пользователь вводит цифры
static void Main(string[] args)
        {
            Console.Write("Введите сумму вклада :  =  ");
            decimal amountOfDeposit = decimal.Parse(Console.ReadLine());
            Console.Write("\nВведите процентную ставку\n по вкладу (%) (1,2 ...13,4 и т.д :)   =  ");
            decimal rateOfInterest = decimal.Parse(Console.ReadLine());
            Console.Write("\nВведите срок вклада (количество дней): days  =  ");
            decimal days = decimal.Parse(Console.ReadLine());
            Console.Write("\nВведите количество дней в году: numOfDaysYear  =  ");
            decimal numOfDaysYear = decimal.Parse(Console.ReadLine());
            decimal sumPersent = (amountOfDeposit * rateOfInterest * days) / (numOfDaysYear * 100);
 
            NumberFormatInfo formatInfo = new NumberFormatInfo(); // создаем объект (using System.Globalization; - пространство имен )
            formatInfo.CurrencySymbol = "руб."; // задаем символ для валюты (можно изменять по желанию)
            formatInfo.CurrencyPositivePattern = 3; // способ расположения символа (может принимать  значения от 0 до 3)
 
            Console.WriteLine(String.Format(formatInfo, "\n Через {0,2} дней,\n к вашему вкладу начислят сумму : {1,25:C2}\n", numOfDaysYear, sumPersent));// используем String.Format, потому что он позволяет применить наш формат при выводе
            Console.ReadLine();
        }
Вот такая часть кода не позволяет управлять форматированием вывода данных, например сдвинуть значение вправо, разделить вводимое число по знакам , например

100000

записать как

100 000

Console.Write("Введите сумму вклада :  =  ");
            decimal amountOfDeposit = decimal.Parse(Console.ReadLine());
Для того, чтобы ввести дробное число требуется вводить "

,

" , точка не воспринимается почему-то (таким образом работа на правом цифровом блоке клавиатуры - неудобна, там точка не воспринимается как разделитель дробной части) Подскажите пожалуйста как можно решить данные вопросы ? Спасибо.

Решение задачи: «Управление форматированием вывода при вводе данных»

textual
Листинг программы
using System;
class Program
{
    static void Main()
    {
        ConsoleKeyInfo cki = new ConsoleKeyInfo();
        string s="";
        for (int i = 1; (cki = Console.ReadKey(true)).Key != ConsoleKey.Enter;)
        {
            if (cki.Key == ConsoleKey.Backspace && s.Length > 0)
            {
                s = s.Substring(0, s.Length - 1);
                Console.Write("\b");
                i--;
            }
            if(char.IsDigit(cki.KeyChar))
            {
                s += cki.KeyChar;
                Console.Write(cki.KeyChar);
                if (i % 3 == 0) Console.Write(" ");
                i++;            
            }
        }
        int num = int.Parse(s);
        Console.WriteLine("\n{0}",num);
        Console.ReadKey(true);
    }
}

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

14   голосов , оценка 4.429 из 5
Похожие ответы