Софтуерно Инженерство
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);
        }
    }
}
 

Тагове:
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 avatar YavorSpassov 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 265 Точки

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