Професионална програма
Loading...
+ Нов въпрос
vonrepiks avatar vonrepiks 6 Точки

Задача "Time + 15 Minutes" в Simple Conditional Statements

Здравейте,

моля някой да ми помогне със старта на тази задача:

"Да се напише програма, която въвежда час и минути от 24-часово денонощие и изчислява колко ще е часът след 15 минути. Резултатът да се отпечата във формат hh:mm. Часовете винаги са между 0 и 23, а минутите винаги са между 0 и 59. Часовете се изписват с една или две цифри. Минутите се изписват винаги с по две цифри, с водеща нула когато е необходимо."

, не мога да измисля, как да обединя двете числа в DateTime формат.

Моля за подсказка, не за решение.

Поздрави,

Тагове:
0
Programming Basics
M1lenkov avatar M1lenkov 3 Точки

Задачата има решение и без DateTime.

1
vonrepiks avatar vonrepiks 6 Точки

Благодаря, ти много това ми трябваше. Да помисля в друга посока и я реших бързо.

Поздрави,

1
krum_43 avatar krum_43 658 Точки

Този метод едва ли ще ти свърши работа ?!?

0
23/01/2021 07:32:54
kiso_blg avatar kiso_blg 57 Точки

Изпиши DateTime променливата като string и й посочи в какъв формат и какво да изписва.

1
02/03/2016 21:23:24
Filkolev avatar Filkolev 4484 Точки

Или в C# 6:

Console.WriteLine($"{time:H:mm}");

1
Demis avatar Demis 0 Точки

Здравейте и аз съм забил на тази задача от вчера, донякъде я издокарвам, в judge-а ми дава 35/100, но има някой неща които не ми се получават. Ако някой добър човечец прати кода, за да видя къде ми е грешката, няма да му се разсърда :)).

0
tochy avatar tochy 7 Точки

using System;

   public class myclass
    {
        public static void Main(string[] args)
        {
           var hour = int.Parse(Console.ReadLine());
            var min = int.Parse(Console.ReadLine());
            
            var sum =((hour*60) + min +15);
            var  resulthour = sum/60;
            if (resulthour >= 24)
            {
                resulthour -= 24;
            }
            var resultmin = sum % 60;
        
            Console.WriteLine("{0}:{1:00}",resulthour,resultmin);
       }
   }

7
Demis avatar Demis 0 Точки

10x bratochka :)

0
TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

Ако ти е интересно моето решение 

http://pastebin.com/E3CAuyM1

0
supersane avatar supersane 234 Точки

От курса по Python научих, че си има тънкости, когато се работи с време и дати. Ако целта на задачата е просто да добавите 15 минути и да проверите дали се увеличава часа или не с един if, добре, може да не се ползва DateTime. Но ако някой ден ви се наложи да пишете софтуер, който ще изчислява време и дати е добре да използвате това, което ви предлага съответния език за работа с време и дати. Бих казал, че това е част от добрите практики на един бъдещ програмист, а защо е важно да се работи внимателно с време и дати може доста да се изговори. В случая на C#, видях че има метод на класа DateTime, който се казва AddMinutes(), така че мисля, че е най-добре часа да се парсва във формат DateTime и после да се използва въпросния метод. Надявам се да съм бил полезен!

1
04/03/2016 23:43:31
fbinnzhivko avatar fbinnzhivko 1585 Точки

100/100 -   https://judge.softuni.bg/Contests/Practice/Index/152#13

using System;

class Program
{
    static void Main()
    {
        var hour = int.Parse(Console.ReadLine());
        var minutes = int.Parse(Console.ReadLine());

        var totalMin = minutes + 15;
        var totalHour = hour + totalMin / 60;
        var minutesAfterHour = totalMin % 60;

        if (totalHour == 24)
        {
            Console.WriteLine("0:{0:00}", minutesAfterHour);
        }
        else
        {
            Console.WriteLine("{0:0}:{1:00}", totalHour, minutesAfterHour);
        }

    }
}

1
05/03/2016 18:23:08
fbinnzhivko avatar fbinnzhivko 1585 Точки

100/100 -   https://judge.softuni.bg/Contests/Practice/Index/152#13

using System;

class Program
{
    static void Main()
    {
        var hour = int.Parse(Console.ReadLine());
        var minutes = int.Parse(Console.ReadLine());
        
        TimeSpan span = new TimeSpan(hour, minutes, 0);
        TimeSpan span2 = new TimeSpan(0, 15, 0);
        TimeSpan total = span + span2;

        Console.WriteLine("{0:h\\:mm}", total);
    }
}

0
Bozhidar.Vangelov avatar Bozhidar.Vangelov 4 Точки

Здравейте,

Разгледах чуждите решения и не намерих нещо подобно на моето, което е почти вярно. Проблема ми е само това, че когато въведа нещо над 23:45 ми го прави на 24:... заради 15 минути които добавям още при четене в конзолата. Има ли начин да се реши с малка редакция на моя код?

Решение

0
15/03/2016 19:58:59
ralitsa_d avatar ralitsa_d 171 Точки

Премести проверката за часа в if-a с проверката за минутите.

Така няма да я прескачаш, ако минутите са повече от 59.

Надявам се, че успях да помогна :)

1
peterkk avatar peterkk 0 Точки
using System;

namespace TimePlus15Minutes
{
    class Program
    {
        static void Main(string[] args)
        {
            int hours = int.Parse(Console.ReadLine());
            int minutes = int.Parse(Console.ReadLine()) + 15;
            string zero = "";

            if (minutes > 59)
            {
                hours += 1;
                minutes -= 60;
            }

            if (minutes < 10)
            {
                zero = "0";
            }

            Console.WriteLine("{0}:{1}{2}", hours % 24, zero, minutes % 60);
        }
    }
}

Това е моето решение. Също 100/100. Дали е най-доброто - спецовете ще кажат :)

0
LeCannibale avatar LeCannibale 3 Точки

Решение с if - ове //


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {

            int h = int.Parse(Console.ReadLine());
            int m = int.Parse(Console.ReadLine());

            int houre = h;
            int minutes = (m % 60) + 15;

            if (minutes > 59)
            {
                houre += 1;
                minutes -= 60;
            }

            if ( houre > 23)
            {
                houre = 0;
            }

 


            if (minutes < 10)
            {
                Console.WriteLine(houre + ":0" + minutes);
            }

            else
            {
                Console.WriteLine("{0}:{1}", houre, minutes);
            }

        }
    }
}

0
dani111 avatar dani111 3 Точки

Ето и моето решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            var hour = int.Parse(Console.ReadLine());
            var minutes = int.Parse(Console.ReadLine());
            var newminutes = (minutes + 15);
                if (newminutes >= 60)
            {
                hour = hour + 1;
                newminutes = newminutes - 60;
            }

            if (hour == 24)
            {
                Console.WriteLine("0" + ":" + newminutes.ToString("00"));
            }
              else  Console.WriteLine(hour + ":" + newminutes.ToString("00"));
            }
        }
    }

0
Isibel avatar Isibel 41 Точки

Ето едно решение без DateTime.

 

int hours = int.Parse(Console.ReadLine());
int minutes = int.Parse(Console.ReadLine());

int sumOfMinutes = (hours * 60) + minutes;
sumOfMinutes = sumOfMinutes + 15;

int resultHour = sumOfMinutes / 60;
int resultMinutes = sumOfMinutes % 60;

Console.WriteLine($"{resultHour % 24}:{resultMinutes:D2}");

1
DenitsaDucDatseva avatar DenitsaDucDatseva 0 Точки

Аз съм използвала TimeSpan за добавянето на минутите и после ToString(@"h\:mm"), за да форматира времето. Дано е от полза :)

0