Loading...
remote87 avatar remote87 121 Точки

[Homework] Math For Developers: Problem 4 Calculate Hypotenuse

Здравейте!

Написах следния код:

static void Main()
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("Enter first cathet length:");
                double cathetA = double.Parse(Console.ReadLine());
                Console.WriteLine("Enter the second cathet length:");
                double cathetB = double.Parse(Console.ReadLine());
                cathetA = Math.Pow(cathetA, 2);
                cathetB = Math.Pow(cathetB, 2);
                double hypotenuse = Math.Sqrt(cathetA + cathetB);
                Console.WriteLine("The hypotenuse of your right angled triangle is: {0: 0.00}", hypotenuse);
            }                   
        }

Мисля, че е вярно написан / не претендирам за най-коректния начин /, но искам да попитам нали Math метода е възможен само за double / поне това ми стана ясно от това, което прочетох от MSDN / и затова му посочвам, колко символа след запетаята да ми разпечата.

...или пак съм объркал?

0
Programming Basics 10/08/2015 19:50:04
Filkolev avatar Filkolev 4482 Точки

Math e клас, в него има повече от един метод. Sqrt специално работи с double, т.е. връща такъв тип, независимо дали си му подал цели числа.

Забележка от гледна точка на качествения код - ползваш една променлива за две неща. cathetA например до вдигаш на квадрат и го запазваш пак в същата променлива, което е подвеждащо. Името на променливата трябва да отразява какво се съдържа в нея; твоята променлива твърди, че пази стойността на единия катет, а всъщност не е така.

Още една препоръка, за такава проста сметка ползвай оператора за умножение, Math.Pow е бавен метод.

И последно, терминът е "cathetus" в единствено число.

2
remote87 avatar remote87 121 Точки

Ок, Fil, много благодаря за препоръките и корекциите, сега ще го коригирам.

Относно променливата и двата катета: как препоръчваш - без Pow и да си е просто cathetusA*cathetusA + cathetusB*cathetusB ли?

Аз бях толкова горд, че сам съм го измислил този код, но нищо предпочитам да коригирам и да го направя коректно от колкото да е некачествен кода. Предполагам, че това ще се научи с практиката :)

П.С.:

for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("Enter first cathet length:");
                double cathetusA = double.Parse(Console.ReadLine());
                Console.WriteLine("Enter the second cathet length:");
                double cathetusB = double.Parse(Console.ReadLine());               
                double hypotenuse = Math.Sqrt(cathetusA*cathetusA + cathetusB*cathetusB);
                Console.WriteLine("The hypotenuse of your right angled triangle is: {0: 0.00}", hypotenuse);
            }

Така по-качествено ли е според теб?

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