Loading...

Задача от подготовка - Лице на триъгълник в равнината

Лице на триъгълник в равнината
Триъгълник в равнината е зададен чрез координатите на трите си върха. Първо е зададен върхът (x1, y1). След това са зададени останалите два върха: (x2, y2) и (x3, y3), които лежат на обща хоризонтална права (т.е. имат еднакви Y координати). Напишете програма, която пресмята лицето на триъгълника по координатите на трите му върха.

Вход
От конзолата се четат 6 цели числа (по едно на ред): x1, y1, x2, y2, x3, y3.    Всички входни числа са в диапазона [-1000…1000]. 
Гарантирано е, че y2 = y3.


Изход
Лицето на триъгълника да се отпечата на конзолата.
 

Примерен вход и изход
Вход    Изход    Чертеж    Обяснения       
5            7.5                       Страната на триъгълника a = 6-1 = 5.
-2                                          Височината на триъгълника h = 1 - (-2) = 3.
6                                          Лицето на триъгълника S = a * h / 2 = 5 * 3 / 2 = 7.5.    
1
1
1                    

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Имам проблем кода ми работи , но "Judge" системата гърми и ми дава 40/100 къде бъркам?

Това е кода :

using System;

namespace TriangleArea
{
    class Program
    {
        static void Main(string[] args)
        {
            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 x3 = Double.Parse(Console.ReadLine());
            var y3 = Double.Parse(Console.ReadLine());
            var sideA = x3 - (x2);
            var heightH = y1 - (y2);
            var areaS = sideA * heightH / 2;
            Console.WriteLine(areaS);

        }
    }
}

 

1
Programming Basics 19/09/2016 10:09:27
borislav9212 avatar borislav9212 745 Точки
Best Answer

Трябва да използваш Math.Abs();. Той взима абсолчютната стойност, тоест (х3 - х2), ако е (5 - 3), абсолютната стохност е = 2.

0
Plamen27 avatar Plamen27 599 Точки

това :

var sideA = x3 - (x2);
var heightH = y1 - (y2
);

трябва да стане това :

var sideA = Math.Abs(x3 - x2);
var heightH = Math.Abs(y1 - y2);

0
19/07/2016 22:18:26

Благодаря!!! Ще може ли да ми кажеш "Math.Abs" каква роля играе?

 

1
Plamen27 avatar Plamen27 599 Точки

Взема абсолютната стойност от разликата на числата.

Тъй като може да имаш отрицателни стойности на числата, тебе те интересува реалната стойност на разстоянието между

2 точки. За това ти е нужна реалната стойност.

Разстоянието от -2 до 3 е равно на 5, ако го представиш като разлика ще дава съвсем различен резултат.

Затова ти е нужен Math.Abs - като го използваш 5 е равно на 5, но и -5 е пак равно на 5.

0
boykostoyanoff avatar boykostoyanoff 15 Точки

var areaS = Math.Abs(sideA * heightH / 2);

0
IPetrov007 avatar IPetrov007 19 Точки

Предварително казвам че съм абсолютно начинаещ и въпроса ми може да е неуместен, но не разбирам защо въвеждаме стойност на променлива, която не използваме никъде /х1/ и защо въвеждаме отделно у2 и у3 при положение че са равни. По този код въвеждаш различни стойности на у2 и у3, а използваш само у2

0
22/07/2016 17:08:30
btonew avatar btonew 43 Точки

Въвеждаме всички числа, защото са координати на съответните върхове, а вече как ще процедираш с решаването на задачата, си е твоя грижа wink

0
20/07/2016 09:48:37

Аз лично трудно стигнах до решението. :)

0
btonew avatar btonew 43 Точки

Аз копирах стойностите на променливите от примерните входове от файла в Notepad. По този начин успях да направя връзката с пресмятанията, и добавяйки Math.Abs(), всичко пасна.

0
Martin999 avatar Martin999 5 Точки

Ами забелязах че си написал 
var sideA = x3 - (x2);

то не трябва ли да бъде 

var sideA = x2 - (x3); тъй като х2 = 6 а х3 = 1

а var heightH = y2 -(y1);

 

според мен ще спре да гърми :D 

 

0
A.Saraidarov avatar A.Saraidarov 1 Точки

var areaS = sideA * heightH / 2.0;

при мене така тръгна

 

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