Проблем с задача 08.Traveling at Light Speed
Колеги това е условието:
Traveling at Light Speed
Create a program that finds for how many weeks, days, hours, minutes and seconds can an object fly at light speed
Assume that 1 light year == 9 450 000 000 000 km.
Assume that the speed of light == 300 000 km / second.
Input
- On first line you receive – the light years to convert
Output
Every number in the output should be formatted to 0 digits after the floating point
- On first line – time in weeks
- On second line – time in days
- On third line – time in hours
- On fourth line – time in minutes
- On fifth line – time in seconds
Examples
Input |
Output |
|
Input |
Output |
|
Input |
Output |
14 |
729 weeks 1 days 4 hours 0 minutes 0 seconds |
|
5 |
260 weeks 3 days 22 hours 0 minutes 0 seconds |
|
0.00000005 |
0 weeks 0 days 0 hours 0 minutes 2 seconds |
Hints
- Search in internet how to convert units.
- The type decimal is big enough for the calculations.
А това ми е кода :
http://pastebin.com/RFxHvgyf
ПС: Решението ми е било правилно, имало е грешки в тестовете на judge. (преди това ми даваше 50/100)
Да имаше проблем в тестовете на judge ама вече са оправени.
Здравей колега , би ли обяснил в коментар как си подходил при решението на тази задача. Виждам , че изчисляваш в променливата total секундите които са в 5 години но каква логика си следвал при решението на задачата. Защото като проследявам с дебъгера кода ти, ми е трудно да проследя как си подходил и как аз да подхождам в бъдеще с такъв тип задачи. Драсни някой ред как стъпка по стъпка си я решил , ако имаш свободно време. Благодаря предварително.
Здравей в total намирам цялото време, което трябва да изпринтирам в секунди. Иначе изчислява за всякакъв вход от конзолата като години (не само за 5) После пишеше да си намерим начин в интернет за изчисляване на цялото време (секудни, минути, часове, дни и т.н.). И вместо да правя ето тези изчисления на "ръка":
decimal Weeks= total / 60 / 60 / 24 / 7;
decimal Days= total / 60 / 60 / 24 % 7;
decimal Hours = total / 60 / 60 % 24;
decimal Minutes = total / 60 % 60;
decimal Seconds= total % 60;
Метода TimeSpan си ги прави тия изчисления автоматично като иска само да му подадеш секундите (трябва да са double, за това съм ги и кастнал към double) и ги запазвам в diff( това име беше в примера в интернет, който намерих не съм го променял).И оттам като напишеш "diff след това "." ти излизат различните неща, които можеш да взимаш от тези секудни(има опции да ти ги конвентира остатъка към секунди, минути, часове и дни) Заради това и за да взема седмиците съм използвал пак дните/7(понеже седмицата има 7 дни). И после отдолу в formatted му задаваш формата, в който искаш да ги изпринтираш.
Не мога да обяснявам много добре, но дано си ме разбрал. А до дебъгера предполагам, че не можеш да се ориентираш, защото тая функция TimeSpan е автоматизирана.
ПС: И друго, което се сетих за да не можеш да дебъгнеш понеже за да се използва тази функция или както се казва трябва отгоре да имаш добавен " using System.Globalization; " понеже ползва тази библиотека(и ако го нямаш просто TimeSpan няма да фунционира), както "using System;" ти е за най-базовите функции като "Console.ReadLine()" примерно.