Софтуерно Инженерство
Loading...
jivako000 avatar jivako000 295 Точки

Задача - Лица на фигури (15 задача от лекцията Логически проверки)

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

Да се напише програма, която въвежда размерите на геометрична фигура и пресмята лицето й. Фигурите са четири вида: квадрат (square), правоъгълник (rectangle), кръг (circle) и триъгълник (triangle). На първия ред на входа се чете вида на фигурата (square, rectangle, circle или triangle). Ако фигурата е квадрат, на следващия ред се чете едно число – дължина на страната му. Ако фигурата е правоъгълник, на следващите два реда четат две числа – дължините на страните му. Ако фигурата е кръг, на следващия ред чете едно число – радиусът на кръга. Ако фигурата е триъгълник, на следващите два реда четат две числа – дължината на страната му и дължината на височината към нея. Резултатът да се закръгли до 3 цифри след десетичната точка


Въпросът ми е мога ли да инициализирам променлива вътре в if конструкцията, така че след като например прочетем square от конзолата, да се изпълни това което е във "къдравите" скоби? Аз пробвах, но не се получава и не мога да разбера защо. Ето част от задачата ми:

 

using System;

class Program
{
    static void Main()
    {
        string figure = Console.ReadLine();
        string square = null;
        if (figure == square)
        {
            var a = double.Parse(Console.ReadLine());
            Console.WriteLine(a * a);
        }
    }
}

 

Благодаря предварително за помощта!

0
Основи на програмирането 27/05/2016 17:30:35
Wark0z avatar Wark0z 1 Точки

using System;
class Figures
{
    static void Main()
    {
        var figure = string.Format(Console.ReadLine());

        if(figure == "square")
        {
            var a = double.Parse(Console.ReadLine());
            Console.WriteLine(Math.Round(a*a,3));
        }
        if(figure == "restangle")
        {
            var a = double.Parse(Console.ReadLine());
            var b = double.Parse(Console.ReadLine());

            Console.WriteLine(Math.Round(a * b, 3));
        }
        if(figure == "circle")
        {
            var r = double.Parse(Console.ReadLine());
            Console.WriteLine(Math.Round(Math.PI * r * r, 3));
        }
        if (figure == "triangle")
        {
            var h = double.Parse(Console.ReadLine());
            var a = double.Parse(Console.ReadLine());
            Console.WriteLine(Math.Round((h * a) / 2, 3));
        }
    }
}

 

Някой може ли да ми каже защо кода не ми работи?

0
j0nze avatar j0nze 39 Точки

Имаш правописна грешка при rectangle.

0
Ataegina avatar Ataegina 1 Точки

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

if (figure == "square")
            {
                var a = double.Parse(Console.ReadLine());
                var area = Math.Round(a * a, 3);
                Console.WriteLine(area);
            }

Дано помага.

0
MarinParov avatar MarinParov 5 Точки

За първи път виждам вариант да се направи калкулация в CWL,
Три действия в един ред. 
Console.WriteLine(Math.Round((h * a) / 2, 3)); . - Елегантно. 

Целия блок за да има смисъл:

 {
            var h = double.Parse(Console.ReadLine());
            var a = double.Parse(Console.ReadLine());
            Console.WriteLine(Math.Round((h * a) / 2, 3));
        }

Декларираме променливите и после се калкулират и форматират на изхода на конзолата.

0
17/02/2019 01:43:08