Loading...
stefan.iliev.A avatar stefan.iliev.A 5 Точки

Затруднение със задача Сумиране на секунди !

Здравейте ,

Имам малък проблем с моята задача.....някои секунди излизат правилно на минути и секунди а други не....къде ми е проблема laugh

 

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

namespace Mins_Secs
{
    class Program
    {
        static void Main(string[] args)
        {
            var sec1 = int.Parse(Console.ReadLine());
            var sec2 = int.Parse(Console.ReadLine());
            var sec3 = int.Parse(Console.ReadLine());
            var secs = sec1 + sec2 + sec3;
            var mins = 0;
            if (secs <= 59)
            {
                mins = 0; secs = sec1 + sec2 + sec3;
            }
            else if (secs > 59)  {
              mins++; secs = secs - 60;
            }
            
            else if(secs>119)
            {
                mins += 2;secs = secs - 120;
            }
            if (secs < 10)
                Console.WriteLine(mins + ":" + "0" + secs);
            else
                Console.WriteLine(mins + ":" + secs);
        }
    }
}
 

Тагове:
0
Programming Basics
ralitsa_d avatar ralitsa_d 171 Точки

Здравей, при втората проверка secs > 59 трябва да добавиш и условие secs <= 119. Без него, дори и секундите да са повече от 119, ще мине само първата проверка, ще се изпълни условието в нея.

Най-добре е да дадеш условието на задачата, за да знаем какви ограничения за входа са ти зададени. За постване на код използвай pastebin.com.

2
H.Stoyanov avatar H.Stoyanov 115 Точки

Освен това първата ти проверка е излишна, понеже вече я имаш (тя дори е изпълнена, ако не влезеш в никоя от if конструкциите). Освен това печатането вконзолата може да се улесни (може да не са ви го показвали още), ако го напишеш така: Console.WriteLine({0}:{1:D2}, mins, secs); Така секундите винаги ще се показват в двуцифрено число, и ако е по-малко от 10, ще добави автоматично 0 (нула) отпред smiley

0
09/05/2016 16:42:01
stefan.iliev.A avatar stefan.iliev.A 5 Точки

Здравей,

току що видях как става по друг начин :) а този дето ти ми показа не съм го срещал 


        static void Main(string[] args)
        {
            var sec1 = int.Parse(Console.ReadLine());
            var sec2 = int.Parse(Console.ReadLine());
            var sec3 = int.Parse(Console.ReadLine());
            var secs = sec1 + sec2 + sec3;
            var mins = secs/60;
            secs = secs % 60;
            Console.WriteLine("{0}:{1}", mins,secs.ToString().PadLeft(2,'0'));
        }
    }
}
 

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Това е моето решение: http://pastebin.com/aaGK3C0v

0
bonyta2442 avatar bonyta2442 0 Точки

Елементарно решение, но съобразно условието и дава 100% в джъджа:

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

namespace SumSeconds
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = int.Parse(Console.ReadLine());
            var b = int.Parse(Console.ReadLine());
            var c = int.Parse(Console.ReadLine());
            var total = a + b + c;

            if (total >= 0 && total <= 59)
            {
                int min = 0;
                int sec = total;
                Console.WriteLine("{0}" + ":" + "{1:D2}", min, sec);
            }
            else if (total >= 60 && total <= 119)
            {
                int min = 1;
                int sec = total - 60;
                Console.WriteLine("{0}" + ":" + "{1:D2}", min ,sec);
            }
            else if (total >= 120 && total <= 179)
            {
                int min = 2;
                int sec = total - 120;
                Console.WriteLine("{0}" + ":" + "{1:D2}", min, sec);
            }
        }
    }
}

0
simeon3000 avatar simeon3000 264 Точки

100/100 на един ред:

Console.WriteLine(DateTime.Today.AddSeconds(int.Parse(Console.ReadLine()) + int.Parse(Console.ReadLine()) + int.Parse(Console.ReadLine())).ToString("m:ss"));

Вярно, че е малко дълъг реда smiley

0
21/06/2017 02:27:41
JoskoToshkov avatar JoskoToshkov 0 Точки

Браво!

Много ми хареса.

Макар че може да се приеме, че е чийт, един вид.

0
kamendraganov avatar kamendraganov 1 Точки

Просто проверката трябва да започне от по-високото число, като предишната задача с > 100 и > 1000. Ето моя код, който си измислих и от раз ми даде 100/100 джуджето :Д

 

            var num1 = int.Parse(Console.ReadLine());
            var num2 = int.Parse(Console.ReadLine());
            var num3 = int.Parse(Console.ReadLine());
            var sum = num1 + num2 + num3;
            if (sum >= 120)
            {
                var sum2 = sum - 120;
                if (sum2 < 10)
                    Console.WriteLine("2:0" + sum2);
                else
                    Console.WriteLine("2:" + sum2);
            }
            else if (sum >= 60)
            {
                var sum3 = sum - 60;
                if (sum3 < 10)
                    Console.WriteLine("1:0" + sum3);
                else
                    Console.WriteLine("1:" + sum3);
            }
            else if (sum < 60)
            {
                if (sum < 10)
                    Console.WriteLine("0:0" + sum);
                else
                    Console.WriteLine("0:" + sum);

 

0
Iv.St avatar Iv.St 8 Точки

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

namespace Сумиране_на_секунди
{
    class Program
    {
        static void Main(string[] args)
        {
            var player1 = int.Parse(Console.ReadLine());

            var player2 = int.Parse(Console.ReadLine());

            var player3 = int.Parse(Console.ReadLine());

            var secs = player1 + player2 + player3;
            var mins = 0;

            if ( 0 <= secs && secs <= 59)
            {
                mins = 0;
            }
            else if (60 <= secs && secs <= 119)
            {
                mins = 1; secs = (secs - 60);
            }
            else if (120 <= secs && secs <= 179)
            {
                mins = 2; secs = ( secs - 120);
            }
            if (secs < 10)
            {
                Console.WriteLine(mins + ":0" + secs);
            }
            else
                Console.WriteLine(mins + ":" + secs);

        }
    }
}

 

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