Профил
Loading...
+ Нов въпрос
jivako000 avatar jivako000 296 Точки

Задача - Лица на фигури (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
Programming Basics 27/05/2016 17:30:35
WifiAvivi avatar WifiAvivi 151 Точки


using System;

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

 

 

Това string square = null; просто обърква if-a. Това ти е грешкта.



 

2
27/05/2016 17:47:40
jivako000 avatar jivako000 296 Точки

Благодаря!

0
jivako000 avatar jivako000 296 Точки

Това е вече оправения ми код, но Judge ми дава едва 50 точки

 

using System;

class Program
{
    static void Main()
    {
        string figure = Console.ReadLine();
        var numOne = double.Parse(Console.ReadLine());
        var numTwo = double.Parse(Console.ReadLine());

        if (figure == "square")
        {
            var square = Math.Round(numOne * numOne, 3);
            Console.WriteLine(square);
        }
        else if (figure == "rectangle")
        {
            var rectangle = Math.Round(numOne * numTwo, 3);
            Console.WriteLine(rectangle);
        }
        else if (figure == "circle")
        {
            var circle = Math.Round(Math.PI * numOne * numOne, 3);
            Console.WriteLine(circle);
        }
        else if (figure == "triangle")
        {
            var triangle = Math.Round(numOne * numTwo / 2, 3);
            Console.WriteLine(triangle);
        }

    }
}

 

П.П - Оправих се!!

0
27/05/2016 18:03:08
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
Ekaterin avatar Ekaterin 133 Точки

До колкото Разбрах въпроса ти се отнася за живот на променлива.

Ако искаш да я използваш извън If конструкцията просто я задели предварително в метода.

0
MarinParov avatar MarinParov 5 Точки

Programming Basics Jan 2019. 

Вариант за решаване и със структура Switch / Case. 

С две думи:
1 въвежда се string FigureType,
2 Switch-a се активира от името на стринга
3 според това дали е Square, Rectangle, Circle, Triangle се задействат отделните случаи case,
4 Във всеки case  се въвеждат страните, височините и радуиса на геометричните фигури,
5 декларира се променлива double area, и се извършва пресмятането на площта на фигурата.
7. като изход извежда форматиран резултат, който може да се форматира като още една променлива или направо с формулата Math.Round(area, 2); примерно.
8. Всеки случай завършва с break; и се затваря със съответните къдрави скоби. 

Има още няколко начина за форматиране. Тънкия момент е да се уцели какви са изискванията за изход в Judge Системата, защото някога не е нужно да се форматира, друг път се иска да се форматира до третия знак и така. Проба - грешка, питане. 

Source code Type of Figure Programing Basics 2019
 

Бележки.

Math.Pow(a, 2) = a * a
Math.PI = 3.14............
Math.PI * Math.Pow(r, 2) = 3,14 * r * r

Не знам как смята по-бързо компа с изразите за прости пресмятания или с математическите формули. 

Също имаме ограничения за размер и време за работа на кода в условието на всяка задача в Judge системата

0