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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.