Проблема при перегрузке методов.
Как компилятор понимает какой тип данных я отправляю в метод ( в данном случае Int или double), если объявление идет цифрами (как и было показано в решении)?
У меня получилось отработать метод с 2 перезагрузками, только тогда когда я объявил переменные заранее и уже эти переменные отправлял в метод.
Треугольник я представил равнобедренным, чтобы было проще проверить работу программы.
скриншоты моего кода:
main - https://ibb.co/sPvjdvM
class Calculater - https://ibb.co/y4G8WdX
Результат - https://ibb.co/fMTW94Q
Но если переменные не объявлять отдельно, а значения указывать в методах, то получается казус:
main2 - https://ibb.co/hc15h8r
в классе я ничего не менял
Результат2 - https://ibb.co/mbTsZdC
Я парвильно разобрался, что проблема именно в переменных? Или у меня где-то еще ошибки?
using System;
using System.Linq;
using System.Collections.Generic;
namespace B_DZ1
{
class Program
{
static void Main(string[] args)
{
Calculater calc = new Calculater();
double ab = 10;
double bc = 10;
double ac = 10;
int corner = 60;
double h = 8.66;
double result1 = calc.CalcTiengelSquar(ab, bc, ac);
double result2 = calc.CalcTiengelSquar(ab, h);
double result3 = calc.CalcTiengelSquar(ab, ac, corner);
Console.WriteLine($"Result1: {result1}\nResult2: {result2}\nResult3: {result3}");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace B_DZ1
{
public class Calculater
{
public double CalcTiengelSquar (double ab, double bc, double ac)
{
double p = (ab + bc + ac) / 2;
return Math.Sqrt(p * (p - ab) * (p - bc) * (p - ac));
}
public double CalcTiengelSquar(double ab, double h)
{
return 0.5 * ab * h;
}
public double CalcTiengelSquar(double ab, double ac, int corner)
{
return 0.5 * ab * ac * Math.Sin((Math.PI*corner)/180);
}
}
}
Upd:
Я Дополнительно проверил и если заполнять дабл значения с точной, то компилятор все понимает отлично и программа отрабатывает корректно.
double result1 = calc.CalcTiengelSquar(10.0, 10.0, 10.0);
double result2 = calc.CalcTiengelSquar(10.0, 8.66);
double result3 = calc.CalcTiengelSquar(10.0, 10.0, 60);
В решении задачи лучше было бы обозначить эту проблему, так как это исходя из ответа совсем не очевидно