Професионална програма
Loading...
+ Нов въпрос
zhivko1985 avatar zhivko1985 34 Точки

Лице на правоъгълник в равнината - домашна работа

Здравейте , 

имам проблем с компилирането на една от задачите .

Ста въпрос за задача 8 - Лице на правоъгълник в равнината

Във Visual Studio след компилиране получавам търсения резултат , но в judge.softuni.bg ми дава грешка.

Къде греша ?

 

            var a = double.Parse(Console.ReadLine());
            var b = double.Parse(Console.ReadLine());
            double area = a * b;
            double perimeter = 2 * (a + b);
            Console.WriteLine(area);
            Console.WriteLine(perimeter);

 

 

1
Programming Basics
Shirdor avatar Shirdor 131 Точки

Няма грешка в кода. Сигорно е ит джъджа

0
24/01/2016 08:09:54
a_dimitrov avatar a_dimitrov 20 Точки

Ако чета вярно условиет на 8-ма задача през конзолата са ти подадени координатите на 2 точки х1, у1 и х2, у2. Имаш подадени 4 параметъра от конзолата, а не 2.  Тогава можеш да намериш дължината на страните и след това да използваш формулата за лице. Мисля, че трябва да се получи нещо като area = (x1 - x2) * (y1 - y2) и perimeter = 2 * ((x1 - x2) + (y1 - y2)).

2
pebodi avatar pebodi 29 Точки

На фигурата, показана в заданието, не са означени кои са x1,x2, y1,y2. Ако х1 е 10, а у1 - 50 и х2 - 60, у2 - 20, тогава изразът, който е показал предния коментирал ще бъде с отрицателен знак. Правилното решение би трябвало да намери по-големите стойности на х и у и от тях да извади по-малките, за да се получат дължината и височината. Примерно за ширината -  

double width = Math.Max(x1 , x2) - Math.Min(x1, x2); 

Аналогично за височината.

4
Tanyo avatar Tanyo 152 Точки

Мисля, че дори ако се използва абсолютна стойност, е още по удачно/кратко. 

a = Math.Abs(y1 - y2);

b = Math.Abs(x1-x2);

3
viki9809 avatar viki9809 1 Точки

Ето и моето решение на задачата :

 

            var x1 = decimal.Parse(Console.ReadLine());
            var y1 = decimal.Parse(Console.ReadLine());
            var x2 = decimal.Parse(Console.ReadLine());
            var y2 = decimal.Parse(Console.ReadLine());

            var width = Math.Abs(x2 - x1);
            var height = Math.Abs(y2 - y1);

            Console.WriteLine("Area: {0}", width * height);
            Console.WriteLine("Perimeter: {0}", 2 * (width + height));
 

 

0
zhivko1985 avatar zhivko1985 34 Точки

Гледах видео с решението ... не бих се сетил сам

 

Решение


            double x1 = double.Parse(Console.ReadLine());
            double y1 = double.Parse(Console.ReadLine());
            double x2 = double.Parse(Console.ReadLine());
            double y2 = double.Parse(Console.ReadLine());
            double width = Math.Max(x1, x2) - Math.Min(x1,x2);
            double hight = Math.Max(y1, y2) - Math.Min(y1, y2);
            Console.WriteLine("Area = {0}",(width*hight));
            Console.WriteLine("Perimeter = {0}", 2 * (width + hight));
      

 

 

3
PetarJekov97 avatar PetarJekov97 7 Точки

double x1 = double.Parse(Console.ReadLine());
            double y1 = double.Parse(Console.ReadLine());
            double x2 = double.Parse(Console.ReadLine());
            double y2 = double.Parse(Console.ReadLine());
            double width = Math.Max(x1, x2) - Math.Min(x1, x2);
            double height = Math.Max(y1, y2) - Math.Min(y1, y2);
            Console.WriteLine("Area = {0}", width * height);
            Console.WriteLine("Perimeter = {0}", 2 * (width + height)); 

 

Това е моят код , работи 100/100 :)

3
LeCannibale avatar LeCannibale 3 Точки

Math.Abs e "ключът за бараката" , тъй като премахва минуса при отрицателните числа / в координатната система/ и ги прави положителни

ако x1 = 10

и

x2 = 60

то

10 - 60 = - 50

но ако използваме Math.Abs(10 - 60) = 50

Друг пример

y1 = - 200

y2 = 100

- 200 + 100 = - 100,

 но ако използваме Math.Abs - 200 + 100 = 300, тъй като се премахва минуса в числото

 

0
Dimon avatar Dimon 0 Точки

С Math.Abs работи перфектно,ето го и моя.

            var x1 = double.Parse(Console.ReadLine());
            var y1 = double.Parse(Console.ReadLine());
            var x2 = double.Parse(Console.ReadLine());
            var y2 = double.Parse(Console.ReadLine());
            var area = Math.Abs(x1 - x2) * Math.Abs(y2 - y1);
            var perimeter =2 * (Math.Abs(x1 - x2) + Math.Abs(y2 - y1));
            Console.WriteLine("rectangle area = " + area);
            Console.WriteLine("rectangle perimeter = " + perimeter);
        }

0
athristov avatar athristov 29 Точки

Здрасти колеги, това е моя код:

            var x1 = double.Parse(Console.ReadLine());
            var y1 = double.Parse(Console.ReadLine());
            var x2 = double.Parse(Console.ReadLine());
            var y2 = double.Parse(Console.ReadLine());
            var width = Math.Max(x1, x2) - Math.Min(x1, x2);
            var height = Math.Max(y1, y1) - Math.Min(y1, y2);
            var area = width * height;
            var perimeter = 2 * (width + height);
            Console.WriteLine("Area is: {0}", area);
            Console.WriteLine("Perimeter is: {0}", perimeter);

Дава ми 80/100 

При въведените стойности от задачата: 60, 20, 10, 50 ми излиза 0 за лице и 100 за периметър а трябва да е 1500, 160.
Къде бъркам?

0
deforse avatar deforse 1 Точки

Сега седя и се мъча с въпросната задача. От лекцията не беше коментирано за въпросната функция "Math.Max". Усетих се,  че трябва да е функция, но "Max/Min" не беше коментирано и посмъртно нямаше как да го ползвам. Това, че упражненията не се записват е крайно гадно. 

Ще ползвам "пищова" , но не си е работа да седя и да преписвам код. 

0
Nlzlatkov avatar Nlzlatkov 0 Точки

Съгласен съм колега.

Не знам видеото на коя лекция си гледал(ако си дистанционна, като мен), но в това, което аз гледах също не беше обърнато внимание на Math.Max и Math.Min. Оставам с впечатлението, че на упражненията се казват неща, които на лекциите не се обясняват. И да, много е гадно, че упражненията не се записват.

Всъщнот задачата е много готина и с цел точно да ни подсети за тези фукции като math.abs/max/min. За това са дадени и отрицателни стойности-за да видиш, че изхода не ти излиза и да те подсети от къде идва проблема. Но за тези, които се бъхтим сами вкъщи(или поне за някои, като мен) е малко по-трудно.

0
13/09/2018 20:36:13
deforse avatar deforse 1 Точки

Аз гледам на Ивайло Димитров. Определено му харесвам подхода и как води. Не се оплаквам. Просто като онлайн, както повечето колеги в такъв тип обучение, съчетаваме още 1000 неща, и като се нагласих да си правя домашните от упражненията установих, че половината неща въобще нямам идея как да станат, пердвид, че не сме ги минавали. Като гледам и следващата задача "Конзолен междувалутен конвертор" - се използват IF-ове, което ще се разглежда другата седмица.

0
Nlzlatkov avatar Nlzlatkov 0 Точки

Да и аз него го гледам.

Ами да и аз така си помислих. Просто няма как да го направиш с 4 валути без if.

Прегледах пак презентацията от 8ми и if няма.

А тогава у мен назрява въпроса, защо имаме домашно върху нещо, което не е взето на лекция, а ще се вземе на 15.09 и защо срокът за него е едва до 16.09?

0
13/09/2018 21:49:45