Софтуерно Инженерство
Loading...
+ Нов въпрос
DimitrovDelyan avatar DimitrovDelyan 0 Точки

c# tech lab 04.Back in 30 minutes

Здравейте, джъдж ми дава 100 от 100 на тази задча, но не ми харесва как съм написал кода. Ако някой може някой да ми даде по оптимален начин за решението ще съм много благодарен.

using System;

namespace back_in_30_minutes
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
            b += 30;
            if(b>60)
            {
                a++;
                b -= 60;
            }
            if(a>=24)
            {
                a -= 24;
            }
            DateTime time = new DateTime(2008, 1, 1, a, b, 1);
           if(a<10) Console.WriteLine(time.ToString("H:mm"));
            else Console.WriteLine(time.ToString("HH:mm"));
        }
    }
}

Тагове:
0
Module: C# Advanced
lilweezy avatar lilweezy 12 Точки

Ето две от мен:
1)

int hour = int.Parse(Console.ReadLine());
            int minutes = int.Parse(Console.ReadLine())+30;
            if (minutes > 59)
            {
                hour += 1;
                if (hour > 23)
                {
                    hour -= 24;
                }
                minutes -= 60;
            }
            if (minutes<10)
            {
                Console.WriteLine(hour+":"+"0"+minutes);
            }
            else if (minutes>=10)
            {
                Console.WriteLine(hour + ":" + minutes);
            }

2)

int hour = int.Parse(Console.ReadLine());
            int minutes = int.Parse(Console.ReadLine());
            int finalTimeInMins = (hour * 60) + (minutes + 30);
            if (finalTimeInMins/60>23)
            {
                finalTimeInMins -= 24 * 60;
            }
            if (finalTimeInMins%60<10)
            {
                Console.WriteLine(finalTimeInMins / 60 + ":" + "0"+finalTimeInMins % 60);
            }
            else
            {
                Console.WriteLine(finalTimeInMins / 60 + ":" + finalTimeInMins % 60);
            }

0
DimitrovDelyan avatar DimitrovDelyan 0 Точки

И аз се сетих за първия вариант, но ми се искаше да упражня DateTime. Мисля че най- оптималния вариант за решението на задачата ще стана точно с него. 

0
Yolito avatar Yolito 8 Точки

Това е моето решение с DateTime ( лектора спомна и за решение с TimeSpan, може да потърсиш):

using System;

namespace _4.BackIn30Minutes
{
    class Program
    {
        static void Main(string[] args)
        {
            int hours = int.Parse(Console.ReadLine());
            int minutes=int.Parse(Console.ReadLine());

            var date = new DateTime(2019, 01, 22, hours, minutes, 00);
            date = date.AddMinutes(30);
            if (date.Minute >= 1 && date.Minute <=9)
            {
                Console.WriteLine(date.Hour + ":0" + date.Minute);
            }
            else
            {
                Console.WriteLine(date.Hour+":"+date.Minute);
            }
        }
    }
}
 

1
Stankoniia avatar Stankoniia 3 Точки

Eто едно кратко решение в четири реда:

namespace L04BackIn30Minutes
{
    using System;

    class BackIn30Minutes
    {
        static void Main()
        {
            int hoursInput = int.Parse(Console.ReadLine());
            int minutesInput = int.Parse(Console.ReadLine());

            int after30Minutes = (hoursInput * 60) + minutesInput + 30;
            int hoursOutput = (after30Minutes / 60) % 24;
            int minutesOutput = after30Minutes % 60;

            Console.WriteLine($"{hoursOutput}:{minutesOutput:D2}");
        }
    }
}

0
20/09/2019 18:17:48