tanchev 2 Точки

## 1.Greater of Two Values

Create a method GetMax() that returns the greater of two values (the values can be of type int, char or string)

### Examples

 Input Output int 2 16 16 char a z z string aaa bbb bbb

Това ми дава 77/100 и не знам, защо при положение, че кода работи, ако някой е наясно да ми каже, ще съм супер благодарен:

``````using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
if (command == "int")
{
HigherThenTwo(first, second);
}
else if (command == "char")
{
HigherThenTwo(first, second);
}
else if (command == "string")
{
HigherThenTwo(first, second);
}

}

static int HigherThenTwo(int first, int second)
{

int result = 0;
if (first > second)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine(result);
return result;
}
static char HigherThenTwo(char first, char second)
{

int result;
if (first > second)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine((char)result);
return (char)result;

}
static string HigherThenTwo(string first, string second)
{
string result = string.Empty;
int firstSum = 0;
int secondSum = 0;
foreach (char c in first)
{
firstSum += c;
}
foreach (char c in second)
{
secondSum += c;
}
if (firstSum > secondSum)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine(result);
return result;
}

}

}
``````

И по интересния факт е, че с готовия мотод за comparison работи и ми дава 100/100:

``````using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
if (command == "int")
{
HigherThenTwo(first, second);
}
else if (command == "char")
{
HigherThenTwo(first, second);
}
else if (command == "string")
{
HigherThenTwo(first, second);
}

}

static int HigherThenTwo(int first, int second)
{

int result = 0;
if (first > second)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine(result);
return result;
}
static char HigherThenTwo(char first, char second)
{

int result;
if (first > second)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine((char)result);
return (char)result;

}
static string HigherThenTwo(string first, string second)
{
string result = string.Empty;
int comparison = first.CompareTo(second);
if (comparison > 0)
{
result = first;
}
else
{
result = second;
}
Console.WriteLine(result);
return result;

}

}
}``````

Някакви идеи?

Мерси,

Тагове:
2
Iv_Konov 383 Точки

Здравей,

Обясниха ти проблема с  - "По дефиниция "B" > "A" , както и "B" > "AA"."  Аз ти предлагам един различен варинт за решение. 100/100...

Това е за проба на name1[0]:

===

char n = name1[0];
Console.WriteLine(n);

===

и после с:

=

name1[0] > name2[0] ? name1 : name2;

=

``````using System;

namespace _09._Greater_of_Two_Values
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine(GameMax(inputName, name1, name2));
}

static string GameMax(string inputName, string name1, string name2)
{
string result = "";

switch (inputName)
{
case "int":
result = (Math.Max(int.Parse(name1), int.Parse(name2))).ToString();
break;
case "char":
case "string":
return name1[0] > name2[0] ? name1 : name2;
default:
break;
}

return result;
}
}
}
``````

Поздрави,

Иван

0
MartinBG 2783 Точки

Това няма да работи коректно, ако стринговете започват с еднакъв символ и имат разлика по-натам.

Например: "Az" и "Aa" или "А" и "Аааааа"

0
Iv_Konov 383 Точки

@MartinBG,

Да, перфектен си! :)

От друга страна, задачата минава с 100/100..:

https://judge.softuni.bg/Contests/Practice/Index/1208#8

(може би само първата буква се следи)

От друга страна, за да има яснота на задачата, коригирам според дълги string-ве (отново работи 100/100). :)

``````using System;

namespace _09._Greater_of_Two_Values
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine(GameMax(inputName, name1, name2));
}

static string GameMax(string inputName, string name1, string name2)
{
string result = "";

switch (inputName)
{
case "int":
result = (Math.Max(int.Parse(name1), int.Parse(name2))).ToString();
break;
case "char":
case "string":
result = StringResult(name1, name2);
break;
default:
break;
}

return result;
}

static string StringResult(string name1, string name2)
{
int shortLength = Math.Min(name1.Length, name2.Length);

for (int i = 0; i < shortLength; i++)
{
if (name1[i] > name2[i])
{
return name1;
}
else if (name2[i] > name1[i])
{
return name2;
}
}

return name1.Length > name2.Length ? name1 : name2;
}
}
}
``````

Поздрави,

Иван

2