10. Centuries to Nanoseconds-Exercises: Data Types and Methods
Здравейте!
Искам да попитам защо задачата не ми дава точки в judge? Направил съм всичко по условието... и с примерите работи перфектно, но точки не дава!
Това е кода:
Мерси!
Здравейте!
Искам да попитам защо задачата не ми дава точки в judge? Направил съм всичко по условието... и с примерите работи перфектно, но точки не дава!
Това е кода:
Мерси!
И при мен е така, пробвах със всякакви типове променливи , минава примерните тестове , но не дава точки.
Ползвай decimal за последните променливи.
Ползвах и decimal и BigInteger ,но не помага ! Вече си мисля ,че е от Judge-а ?
Е няма как да е от Judge след като моето решение минава с 100/100.
Поправи ме ако греша ,но има ли тип BigDecimal аз съм чувал само за BigInteger.
Има BigDecimal ,но в Java :) Още превключвам към C# от Java. И нямаше нужда от минусче...:)
Проблемът е в начина на форматиране на изхода, което за съжаление не е показано в условието на задачата. Давам линк към материалите от курса по Prоgramming Basics януари 2016, на слайд 13 може да се види, че очакваният изход следва да се форматира така:
Centures = 5
5 centuries = 500 years = 182621 days = 4382904 hours = 262974240 minutes = 15778454400 seconds = 15778454400000 milliseconds = 15778454400000000 microseconds = 15778454400000000000 nanoseconds
С този вид форматиране на изхода се получи :) Над 15 опита направих със сегашнто условие ...:) Изглежда са объркали матерялите от курсовете.
Мерси много!
Сега вече получих 100/100 точки.
В условието беше форматиран отделен ред всеки input, но явно са го сменили със старото условие, което ни го дадоха още в programming basics
Use an appropriate data type for every data conversion. Beware of overflows!
Console.WriteLine("{0} centuries = {1} years = {2} days = {3} hours = {4} minutes = {5} seconds = {6} milliseconds = {7} microseconds = {8} nanoseconds", centuries, years, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
Само да ти обърня внимание, че може админите на форума да ти направят забележка, че си написъл/а толкова дълъг код в коментара си. Това е нарушение на 12-та точка:
"12. Във всеки пост е позволено цитирането на не повече от 15 реда код. Ако искате да споделите по-дълъг код, използвайте сайтове като Pastebin и Github Gist)."
Здравей,
Аз за всеки случай съм използвала decimal за последните 3 - мили; микро и нано секунди. Като изкарам резултата на конзолата съвпада едно към едно с дадените отговори, но отново и при мен дава грешни резултати в judge. Много ще се радвам някой на който му минава програмата да даде линк към кода който е написал за да сравниm къде е грешката. Тъпото е, че задачата е елементарна и все пак някъде грешим, освен ако няма отново проблем с условието, както беше със задачата за дните от седмицата в упражнението.
S BigInteger raboti !!
Sashto taka ouputite ne savpadat v judje i v word documenta !
Работи с BigInteger, но не е необходимо да се прибягва чак до такъв тип данни. За микро и наносекундите и decimal е достатъчен, а секундите и милисекунди и в ulong се побират. За всичко друго до минутите обикновен int е напълно достатъчен.
Реших да тествам при N=20 това, което Анна казва. Случва се нещо, което не мога напълно да си обясня:
* при decimal микросекунди и decimal наносекунди всичко работи според очакванията
* при ulong микросекунди и decimal наносекунди конверсията не сработва
И в двата случая извежда правилното число за микросекундите (63 113 817 600 000 000), което е в рамките на ulong. Бих разбрал, ако гърмеше при ulong наносекунди (63 113 817 600 000 000 000 би било твърде голямо число), но в случая те са дефинирани като decimal. Това означава ли, че е необходимо да се прилага по-високия тип данни и за променливата, от която конвертираме (нищо, че нейната стойност не го предполага)?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10.CenturiesToNanoseconds
{
class Program
{
static void Main(string[] args)
{
byte centuries = byte.Parse(Console.ReadLine());
int years = 100 * centuries;
int days = (int)(years * 365.2422);
int hours = 24 * days;
ulong min =(ulong)( 60 * hours);
ulong sec = 60 * min;
ulong milliSec = 1000 * sec;
decimal microSec =1000 * milliSec;
decimal nanoSec = 1000 * microSec;
Console.WriteLine($"{centuries} centuries = {years} years = {days} days = {hours} hours = {min} minutes = {sec} seconds = {milliSec} milliseconds = {microSec} microseconds = {nanoSec} nanoseconds");
}
}
}
Мисля че този вариант е най-добре,тъй като е използвано само ученото до сега,което е обяснено в презентациите,иначе и другите решения, които сте дали са много добре!
:)
Здравейте, какво прави $?
" Console.WriteLine($"{centuries} centuries = {years} years = {days} days = {hours} hours = {min} minutes = {sec} seconds = {milliSec} milliseconds = {microSec} microseconds = {nanoSec} nanoseconds");"
Здравей !
Както забелязваш, в къдравите скоби, вместо да стоят плейсхолдъри от сорта на {0}, {1} и т.н., а след това да се изброяват имената на променливите (извън кавичките, със запетаи), самите променливи са вписани като плейсхолдъри ( ако мога така да се изразя ) - {hours} {minutes} .Така си спестяваш описването на всяка една променлива извън кавичките. Това е възможно благодарение на този символ $ пред кавичките, но не работи на Visual Stuido 2013, с което съм аз.
Днес се сблъсках и аз с проблема...като потърсих в гугъл век към наносекунда,излиза различен резултат от отговора на задачата!