Operators and Expressions - задача 4 (Rectangles)


0
Кодът ми е верен и имам 100 точки, обаче го написах по мега малоумният начин, тъй като не можах да намеря как става това, което исках. Може ли да ми кажете как мога да събера всичко в един Console.Writeline(), защото като сложа вътре 2 променливи, нито една не се показва с нули след десетичната запетая.

using System;

namespace RectangleAreaPerimeter
{
    class RectangleAreaPerimeter
    {
        static void Main()
        {
            double w = double.Parse(Console.ReadLine());
            double h = double.Parse(Console.ReadLine());
            double area = w * h;
            double p = (w + h) * 2;
            Console.Write("{0:0.00}", area);
            Console.Write(" ");
            Console.Write("{0:0.00}", p);
        }
    }
}



Отговори



0

Можеш да ги toString-неш.

Console.WriteLine("{0} {1}",area.ToString("0.00"), perimeter.ToString("0.00"));

Един съвет - не съкращавай имената на променливите. :)


от lllevski (1431 точки)


0

Console.WriteLine("{0:0.00} {1:0.00}", area, p);

или

Console.WriteLine("{0:F2} {1:F2}", area, p);


от geiff (457 точки)


0
Мерси много :)

от dadanchi (0 точки)


0

Аз пък не мога да разбера защо като написах този код ми даде 40/100, а като промених float -> double ми даде 100.

using System;


namespace _04.Rectangles
{
    class Program
    {
        static void Main()
        {
            float width = float.Parse(Console.ReadLine());
            float height = float.Parse(Console.ReadLine());
            float area = width * height;
            float perimeter = 2 * (width + height);
            Console.WriteLine("{0:0.00}" + " " + "{1:0.00}", area, perimeter);

        }
    }
}


от peter_85 (279 точки)


1

float е със 7-8 знака, double с 15-16, ако се въведе от конзолата число с повече от 7-8 знака, а ти си декларирал като float променливата която чете входа, ще се отрежат цифрите след 8 и нагоре и в същност ще се промени самото число и така дава грешен резултат. Например а = 1,25874361281, ако 

а е от тип float ще се запази следното а = 1.258744, а в double => a = 1,25874361281, и ако изваждаш примерно 5,4 - а =>

резултатът при float - 4.141256, double - 4.14125638719


от geiff (457 точки)

0
Благодаря за отговора, но все пак в условието няма изискване за такава голяма точност.

от peter_85 (279 точки)



0

Има един запис, който на мен лично много ми харесва и често го използвам:

Console.WriteLine($"{area:F2} {p:F2}");

Случва се понякога форматирането на стринга да не работи както очакваш, но тогава може да напишеш това

Console.WriteLine($"{area.ToString("F2")} {p.ToString("F2")}");
Това се нарича Interpolated string. Повече за него в MSDN


от vasilv (275 точки)


0

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

using System; namespace Rectangles { class Display { static void Main() { double a = double.Parse(Console.ReadLine()); double b = double.Parse(Console.ReadLine()); Console.WriteLine("{0:0.00} {1:0.00}" , (a * b) , ((2 * a) + (2 * b))); } } }

Благодарско, че ми припомнихте записа {0:F2} вместо {0:0.00}