Simple Conditional Statements, Задача 16- Време +15 минути
Имам леко затруднение при решаването на тази задача. Много бих се радвал на малко помощ.
Имам леко затруднение при решаването на тази задача. Много бих се радвал на малко помощ.
Стигнал ли си до някъде?
Ето и моето решение от архива, така съм го писал преди няколко месеца -> http://pastebin.com/pCw2SwvC
Имаш грешка при if (hour > 23). Така системата ти дава 94%
не трябва да е hour = 0 , а hour -= 24. Останалото е добре.
if(hour > 23)
{
hour -= 24;
}
Интересна задачка
Всички задачи за времена, дати, интервали ги решавам винаги с вградените методи DateTime или TimeSpan и няма сила на света, която да ме накара да правя проверки, делене на 60 и т. н.
int h = int.Parse(Console.ReadLine()); int m = int.Parse(Console.ReadLine()); DateTime hm = DateTime.ParseExact($"{h}:{m}", "H:m", null); hm = hm.AddMinutes(15); Console.WriteLine(hm.ToString("H:mm"));
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Време___15_минути
{
class Program
{
static void Main(string[] args)
{
var hours = int.Parse(Console.ReadLine());
var mins = int.Parse(Console.ReadLine());
mins = mins + 15;
if (mins > 59)
{
hours = hours + 1;
mins = mins - 60;
}
if (hours > 23)
{
hours = 0;
}
if (mins < 10)
{
Console.WriteLine(hours + ":0" + mins);
}
else
Console.WriteLine(hours + ":" + mins);
}
}
}
Предвид, че задачата все пак е в темата "Conditions" съм я решила по този начин:
Минава 100 от 100.
// 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}");
аз така съм я решил
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 starthour = int.Parse(Console.ReadLine());
int startminutes = int.Parse(Console.ReadLine());
int minutes = starthour * 60 + startminutes;
minutes += 15;
int finalhours = minutes / 60;
int finalminutes = minutes % 60;
if (finalhours > 23)
{
finalhours -= 24;
}
if (finalminutes < 10)
{
Console.WriteLine($"{finalhours}:0{finalminutes}");
}
else
{
Console.WriteLine($"{finalhours}:{finalminutes}");
}
}
}
}
var hours = int.Parse(Console.ReadLine());
var minutes = int.Parse(Console.ReadLine());
hours = minutes / 60;
minutes = minutes % 60;
if (minutes < 10)
{
Console.WriteLine(hours + ":0" + minutes + 15);
}
else
{
Console.WriteLine(hours + ":" + minutes + 15);
}
Казвайки hours = minutes / 60 презаписваш стойността на hours. При положение, че получаваш стойност за тази променлива от входа, не мисля, че това е, което искаш да направиш. Може би искаш да добавиш още часове? В такъв случай може да ползваш +=, вместо обикновено присвояване с =.
Така написано можеш да надхвърлиш 59 минути при печатането и да отпечаташ 67 минути, примерно, което е грешен резултат. По-добре първо прибави минутите, провери дали се променя часа след прибавените минути и тогава печатай.