Лице на правоъгълник в равнината - домашна работа
Здравейте ,
имам проблем с компилирането на една от задачите .
Ста въпрос за задача 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);
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, тъй като се премахва минуса в числото
С 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);
}
Здрасти колеги, това е моя код:
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.
Къде бъркам?
Доколкото виждам за height си задал Math.Max(y1, y1), а би трябвало да бъде Math.Max(y1, y2)
Грешката е в следния ред
Сравняваш y1 и y1.
Ясно да, сега осъзнах грешката си , мерси много за бързия отговор колеги!
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);
колега мисля, че саматите функции на Math(min и max) нещо бъркат. Аз също пробвах първоначално с тях и после с math.abs стана перфектно 100 от 100.