[C#] Fundamentals [02. Data types and variables] - моето решение


0

Това са моите решения на задачите от домашното на тема 02. Включил съм всички задачи, дори и тези, за които не трябва да предаваме решения. Надявам се на някого да са полезни. Успех. Ще следя темата за въпроси/критики/коментари. Лек ден!




Отговори



1

Здрасти,

Тествай си ги в БГКодер , мисля ,че втора задача ти се чупи , не съм я компилирал , но така мисля .

Аз имам проблем с втора задача , изкарва ми 83 точки и вече не знам какво да направя :

using System; /// <summary> /// Write a program that safely compares two floating-point numbers (double) with precision eps = 0.000001. /// </summary> class ComparingFloats { /// <summary> /// Defines the entry point of the application. /// </summary> static void Main() { double firstNumber = double.Parse(Console.ReadLine()); double secondNumber = double.Parse(Console.ReadLine()); double eps = 0.000001; double assume = (firstNumber - secondNumber) * -1; if (eps > assume) { Console.WriteLine("true"); } else if(eps <= assume) { Console.WriteLine("false"); } } }

Ето и другите мои решения : https://github.com/encho253/CSharp-I/tree/master/02.Data-Types-and-Variables


от encho.enevski (316 точки)


0

Благодаря за отбелязването. Да, наистина имах грешка, която вече е поправена. Изкарваше ми "True" и "False" с големи букви, понеже C# така принтира bool-еви променливи. Аз лично реших проблема използвайки тернарен оператор:

            Console.WriteLine(isEqual ? "true": "false");

Не е най-красивия начин да се реши, но в случая свърши работа.

Относно твоето решение: чупи се в случаите, когато първото число е по-голямо от второто. Така променливата assume винаги ще ти е по-малка от eps, дори и когато по абсолютна стойност е по-голяма.

Заменяш

double assume = (firstNumber - secondNumber) * -1;

с

double assume = Math.Abs( firstNumber - secondNumber );

и ще ти даде 100/100


от Stefcho89 (75 точки)

0
Също така е добра практика ,когато пишеш if - else да завършваш само с else..
Тоест в твоя случай триеш if(eps <= assume).
Не че е грешно, но по КПК курса, който ще е след време това ще се отчете като грешка и по-добре  от сега да го заучиш както трябва :)
Поздрави !


 ЕДИТ : Ето ти и моето решение, което е без вградени методи, ако случайно се чудиш що е math.abs от по-горния коментар. 
static void Main() { double x = double.Parse(Console.ReadLine()); double y = double.Parse(Console.ReadLine()); double eps = 0.000001; if (x-y>0) { if (x - y <eps) { Console.WriteLine("true"); } else Console.WriteLine("false"); } else { if (y - x < eps) { Console.WriteLine("true"); } else Console.WriteLine("false"); } }

от Nasi4 (30 точки)