C# Fundamentals - 05. Conditional Statements Multiplication sign Грешка в домашното?


1

Здравейте забелязaх нещо странно в Bgcoder

Ето нулевите тестове

InputOutput
2
5
2
+
2
5
-2
-
-0.5
0
-2
0

Еxpected output :0 Your output: - 

Това е отговора на bgcoder за нулев тест 2 .Нещо не мога да схвана грешка ли има ?




Отговори



2
Ето ги тестовете, на нулев тест 2 трябва да е нула, това в условието на задачата са примери с ,които да си сверяваш решението няма гаранция ,че ги има в тестовете.

от milislavski (886 точки)


0
Ами според мен не трябва да е така ,но в момента си прав.



0
това е така защото проверката за положително или отрицателно число се прави на база произведение на числата а при умножение по нула съответно и произведението е равно на нула



0

на същата задача bgcoder ми дава 0/100 точки, а съм сигурен, че кодът ми смята вярно. Да не би защото умножавам трите числа и принтвам знака на произведението?

help, pls

edit: сори, не бях видял, че са floating point :(


от valyo (80 точки)


1
пробвай това 
using System; class Program { static void Main() { double A = double.Parse(Console.ReadLine()); double B = double.Parse(Console.ReadLine()); double C = double.Parse(Console.ReadLine()); double X = (A * B * C); if (X == 0) { Console.WriteLine("0"); } else if (X < 0) { Console.WriteLine("-"); } else if (X > 0) { Console.WriteLine("+"); } } }


0

@Yanko

Благодаря, и аз съм я решил по същия начин, но първо използвах int, а не double и ми наби 0/100!!!


от valyo (80 точки)



0

А на мен защо ми дава 70 точки, аз не ги умножавам, така прочетох в условието пук и то е същото.

Пробвах и с още булеви сравнения да ограничавам и пак 70, но няма смисъл мисля, че това прави всички проверки. Разбрах условието така, ако има отрицателно число но няма 0 "-", ако всички са положителни "+", ако има поне едно число 0 независимо от другите "0".

decimal numberOne = decimal.Parse(Console.ReadLine()); decimal numberTwo = decimal.Parse(Console.ReadLine()); decimal numberThree = decimal.Parse(Console.ReadLine()); if (numberOne > 0 && numberTwo > 0 && numberThree > 0) { Console.WriteLine("+"); } else if (numberOne == 0 || numberTwo == 0 || numberThree == 0) { Console.WriteLine("0"); } else { Console.WriteLine("-"); }

дори стигнах до там да ползвам decimal и пак неще да пусне фандък(ова) някоя друга точка бонус :)))


от dim.dim (245 точки)


1
Ами ако имаш 2 отрицателни и 1 положително тогава като ги умножиш би трябвало да влезнеш в 1вия случай, защото е положително , но при твоя код отива директно в 3тия случай - , може би там ти гърми :) 

от michaela (17 точки)


0
Ето моето виждане за задачата - главната идея е да се направи без да се умножава:
if (a == 0 || b == 0 || c == 0) { Console.WriteLine("0"); } else if ((a > 0 && b > 0 && c > 0) || (a > 0 && b < 0 && c < 0) || (a < 0 && b > 0 && c < 0)|| (a < 0 && b < 0 && c > 0)) { Console.WriteLine("+"); } else { Console.WriteLine("-"); }

от StoikoNeykov (2621 точки)