Homework "Console Input / Output"


0

Здравейте,

          Искам да попитам дали разбирам правилно условието и дали даденият пример под задачата отговаря на условието. Става въпрос за "Problem5. Formatting Numbers". Цитирам условието: 

"The program then prints them in 4 virtual columns on the console. Each column should have a width of 10 characters."

В примера отдолу всяка колона има различна широчина. Ако съм разбрал правилно условието, ще се радвам някой да ми помогне с последното подусловие:

"The number c should be printed with 3 digits after the decimal point, left aligned."

Ето го и моят код, който няма да работи коректно в двата случая, ако въведа например за "c"-"1,5" и "10,5":

"static void Main(string[] args)

        {
            Console.WriteLine("Enter an integer number in the range of 0 to 500:");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter a float number:");
            float b = float.Parse(Console.ReadLine());
            Console.WriteLine("Enter a float number:");
            float c = float.Parse(Console.ReadLine());
            string convertToBinary = Convert.ToString(a, 2);        
            Console.WriteLine("||{0:x3}        ||{1}||{2,10:F2}||{3:F3}     ||", a, convertToBinary, b, c);           
        }"




Отговори



1

Здравей,

Всяко поле трябва да бъде с широчина точно 10 символа. Разгледай начините за форматиране на аутпута, както и String.PadLeft() метода.

ТОВА е моето решение на задачата - за ориентир. :)


от dentia (12519 точки)


1
E, не очаквах отговорът да се крие в един знак "-". Мерси много отново ;)

от antoanelenkov (1047 точки)


1

Здравей!

Можеш да принтираш number c например по следния начин:

Console.WriteLine("{0}|", c.ToString("#0.###").PadRight(10, ' '));

Този код ще принтира number c в желания формат, а PadRight ще допълни реда с whitespaces.


от lnikod4s (6538 точки)


1
 

Пробвай да форматираш полетата с криви скоби ето така:

Console.Write("{0,-10}|", Convert.ToString(a, 16).ToUpper());
 Console.Write("{0}|", Convert.ToString(a, 2).PadLeft(10, '0'));

Console.Write("{0,10}|", b.ToString("F2", CultureInfo.InvariantCulture));

-10 прави 10 знака и ти измества резултата в ляво, PadLeft допълва със символи до 10, в  случая с нули.може да прочетеш за формата на нулите след десетичната запетая тук


от tomasaa (84 точки)


0

Ето моите решения. Тук.


от TodorDimitrov (757 точки)


1

Здравей!

Вече има отворена тема за домашните, можеш да преместиш своето ТУК. :)


от dentia (12519 точки)


0
Тук са моите решения. След доста дъго време и аз се включвам. По-добре късно от колкото... :)

от Nayata (3190 точки)