Професионална програма
Loading...
tanchev avatar tanchev 2 Точки

Methods Lab - 09. Greater of Two Values

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)
        {
            string command = Console.ReadLine();
            if (command == "int")
            {
                int first = int.Parse(Console.ReadLine());
               int second = int.Parse(Console.ReadLine());
                HigherThenTwo(first, second);
            }
           else if (command == "char")
            {
                char first = char.Parse(Console.ReadLine());
                char second = char.Parse(Console.ReadLine());
                HigherThenTwo(first, second);
            }
            else if (command == "string")
            {
                string first = Console.ReadLine();
                string second = Console.ReadLine();
                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)
        {
            string command = Console.ReadLine();
            if (command == "int")
            {
                int first = int.Parse(Console.ReadLine());
                int second = int.Parse(Console.ReadLine());
                HigherThenTwo(first, second);
            }
            else if (command == "char")
            {
                char first = char.Parse(Console.ReadLine());
                char second = char.Parse(Console.ReadLine());
                HigherThenTwo(first, second);
            }
            else if (command == "string")
            {
                string first = Console.ReadLine();
                string second = Console.ReadLine();
                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
Fundamentals Module
Iv_Konov avatar Iv_Konov 383 Точки

Здравей,

 

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

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

===

string name1 = Console.ReadLine();
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)
        {
            string inputName = Console.ReadLine();
            string name1 = Console.ReadLine();
            string name2 = Console.ReadLine();

            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 avatar MartinBG 2783 Точки

@Iv_Konov

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

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

0
Iv_Konov avatar 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)
        {
            string inputName = Console.ReadLine();
            string name1 = Console.ReadLine();
            string name2 = Console.ReadLine();

            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