Loading...
tr31ze avatar tr31ze 5 Точки

[Homework] C# Basics - Console-Input-Output - Problem {4} - Number Comparer

Здравейте!

Опитвам се да реша задачата с try-catch. Идеята ми е да хвана кога са въведени две еднакви числа. Проблема е, че Math.Max не хвърля Exception при въвеждането на равни числа. Някой може ли да ми даде идея как да го направя. 

Ето и кода до сега: 

double firstValue = double.Parse(Console.ReadLine());
double secondValue = double.Parse(Console.ReadLine());
try
{
     Console.WriteLine("Greatest of two: " + Math.Max(firstValue, secondValue));
}
catch (Exception e)
{
     throw new Exception("The numbers are equal." + e);
}

0
Programming Basics
RoYaL avatar RoYaL Trainer 6849 Точки

static double Max(x, y)

{

    if (x == y)

    {

        throw new Exception("The numbers are equal");

    }

    return Math.Max(x, y);

}

 

static void Main()

{

     double firstValue = double.Parse(Console.ReadLine());
     double secondValue = double.Parse(Console.ReadLine());
     try
     {
         Console.WriteLine("Greatest of two: " + Max(firstValue, secondValue));
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }

}

 

Нещо такова си го представям. Метода ти, който де факто играе ролята на wrapper върху Math.Max хвърля ексепшън в случай, че числата са равни. И после ползваш него, вместо Math.Max(). Иначе може да throw-ваш ексепшъна, още като се въведат числата и забележиш, че са равни.

Не знам дали има готов метод, който да прави това, което искаш. По-скоро не.

1
g.stoyanov avatar g.stoyanov 776 Точки

CompareTo Method

 

double firstValue = double.Parse(Console.ReadLine());
double secondValue = double.Parse(Console.ReadLine());
switch (firstValue.CompareTo(secondValue))
{
    case 1:
        Console.WriteLine("{0} > {1}", firstValue, secondValue);
    break;
    case -1:
        Console.WriteLine("{0} < {1}", firstValue, secondValue);
    break;
    default:
        Console.WriteLine("{0} = {1}", firstValue, secondValue);
    break;
}

6
18/11/2014 18:28:34
remote87 avatar remote87 121 Точки

Здравей, Стоянов!

Може ли да те помоля само да ми обясниш / като за по-глупавички /, защо case 2 всъщност трябва да е case - 1?! Досега го мъчих само с case 2 и не работи и това е. Само това като сменя си работи съвсем коректно програмата...

Никъде не намерих такъв пример и не мога да разбера.

0
22/08/2015 18:40:44
nok32 avatar nok32 6 Точки

А решението:

double firstValue = double.Parse(Console.ReadLine());
double secondValue = double.Parse(Console.ReadLine());

 

Console.WriteLine(firstValue <= secondValue ? seconValue : firstValue);

, коректно ли е на условието на задачата?

3
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Според мен не напълно, защото когато са равни ще ти изкара еднозначно, че второто е по-голямо :)

0
DenisDuev avatar DenisDuev 39 Точки

И все пак извайждайки второто то показва, че са равни, тъй като в примерите е дадено вход: 0 и 0 изход 0. Тоест при равни числа трябва да се покаже едно от тях, без значение дали първото или второто защото те са равни.

0
NedNikolov avatar NedNikolov 45 Точки


  Лично за мен това е най-коренктия отговор, защото в условието се казва да не използваме if. Тези три реда код, които си дал, са най-практични за използване, Ето моя:

            double a = double.Parse(Console.ReadLine());
            double b = double.Parse(Console.ReadLine());
            Console.WriteLine(a >= b? a : b);

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