Loading...
Plotso avatar Plotso 24 Точки

Домашно : Simple Conditions , Задача 16 - Време +15 минути

Здравейте! От един час мъча тази задача и сътворих някакво решение , но получавам 70 точки в Judge-а , защото при примера ,където се въвеждат 23 часа и 59 минути ,моят код изкарва като отговор 24:014 ,а се очаква 0:14. Пробвах няколко варианта да поправя грешката, но не бяха особено сполучливи.... Поствам си първоначалният код и моля някой да ми каже къде точно ми е грешката. Прегледах доста разнообразни решения , но искам да си поправя моя код по някакъв начин.Предварително благодаря на отзовалите се !   smiley

http://pastebin.com/VPPAGHAy

Тагове:
0
Programming Basics
fbinnzhivko avatar fbinnzhivko 1586 Точки
Best Answer

Изгубих доста време да намеря условието на задачата. Следващия път като ти трябва помощ дай повече информация за условието. Така повече хора биха ти помогнали.

 

http://pastebin.com/kKM7rJDv - Твоя код поправен само със if else с всички гранични случаи.
http://pastebin.com/EfrwV4qk - Най краткото решение.
http://pastebin.com/fTNhJ8X9 - Моята логика при решението на тази задача.

1
12/09/2016 22:28:43
sanker avatar sanker 12 Точки

Ето и друго кратко решение с DateTime:

http://pastebin.com/My7q2B0k

0
Pilgrimage avatar Pilgrimage 515 Точки

Тази част от кода ти :

            else if (m >= 60)

            {

                h = h + 1;

                m = m - 60;

                Console.WriteLine(h + ":0" + m);

не работи коректно, защото 59 мин + 15 мин = 74 мин - 60 = 14 мин, а ти добавяш нула отпред.

Освен това не проверяваш дали часовете надхвърлят 23, за да ги приравниш на нула.

0
vancho avatar vancho 430 Точки

Задачата може да се реши и по-лесно с DateTime 👌

-1
Pilgrimage avatar Pilgrimage 515 Точки

Ето ти фикс на кода :

http://pastebin.com/GaSREZrS

Пояснение :

m.ToString().PadLeft(2, '0')

преобразува числото "m"  в стринг, като го форматира до "2" знака, допълвайки отляво с "0", ако е едноцифрено.

0
12/09/2016 21:52:16
DilyanaGancheva avatar DilyanaGancheva 7 Точки

много изчистено!

 

0
Iliev88 avatar Iliev88 39 Точки

Това е моето решение. Свел съм го до материала от миналата лекция. Може би не е перфектното, но сработи в джъджа.

http://pastebin.com/avZMzezn

 

Поздрави.

0
zlatko81 avatar zlatko81 14 Точки

Решение с  TimeSpan е най-бързо и лесно :

var hours = int.Parse(Console.ReadLine());
var minutes = int.Parse(Console.ReadLine());
            TimeSpan span = new TimeSpan(hours, minutes, 0);
            TimeSpan span2 = new TimeSpan(0, 15, 0);
            TimeSpan Total = span + span2;
 Console.WriteLine("{0:h\\:mm}", Total);

0
valcho62 avatar valcho62 178 Точки

Използваш else if  за проверка дали минутите са повече от 60 .Там променяш часа на 24 и веднага печаташ, като тук имаш излишна нула в печата. Проверката за часовете не минава въобще. Изнеси проверката за минутите в отделен иф.

 

Свикни да използваш дебъгера. В голяма част от задачите, да не кажа всичките, ще се наложи да дебъгваш .

0
14/09/2016 10:47:06
dakata avatar dakata 26 Точки

Ето и моето решение колеги:

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

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

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

            if (hours == 24) hours = 0;

            Console.WriteLine("{0}:{1:00}", hours, minutes);
        }
    }
}

 

0
social1986 avatar social1986 2 Точки

А това е моето решение :) 

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

namespace Time___15_Minutes
{
    class Program
    {
        static void Main(string[] args)
        {
            int hour = int.Parse(Console.ReadLine());
            int minutes = int.Parse(Console.ReadLine());
            int a = 15;
            int sum = minutes + a;

            if (hour <= 23 && sum <= 59)
            {
                Console.WriteLine($"{hour}:{sum}");
            }

            else if (hour < 23 && sum > 59 && sum < 69)
            {
                int hour1 = hour + 1;
                int sum1 = sum - 60;
                Console.WriteLine($"{hour1}:0{sum1}");
            }

            else if (hour >= 23 && sum > 59 && sum <= 69)
            {
                int hour1 = 00;
                int sum2 = sum - 60;
                Console.WriteLine($"{hour1}:0{sum2}");
            }

            else if (hour >= 23 && sum > 69)
            {
                int hour1 = 00;
                int sum2 = sum - 60;
                Console.WriteLine($"{hour1}:{sum2}");
            }

            else if (hour > 23 && sum <= 59)
            {
                int hour1 = 00;
                Console.WriteLine($"{hour1}:{sum}");
            }
                       
            else if (hour == 23 && sum > 59 && sum <= 69)
            {
                int hour1 = 00;
                int sum5 = sum - 60;
                Console.WriteLine($"{hour1}:0{sum5}");
            }

            else if (hour < 23 && sum > 69)
            {
                int hour1 = hour + 1;
                int sum4 = sum - 60;
                Console.WriteLine($"{hour1}:{sum4}");
            }


        }
    }
}
 

0
svilendotorg avatar svilendotorg 2 Точки

            // INPUT
            int hour = int.Parse(Console.ReadLine());
            int minute = int.Parse(Console.ReadLine());

            // DEFINITIONS
            int sum = hour * 60 + minute + 15;
            int hourFinal = sum / 60; if (hourFinal >= 24) hourFinal = 0;
            int minuteFinal = sum%60;

            // OUTPUT
            if (minuteFinal < 10) Console.WriteLine($"{hourFinal}:0{minuteFinal}");
            else Console.WriteLine($"{hourFinal}:{minuteFinal}");

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