Loading...
PeterChernev avatar PeterChernev 3 Точки

Data Types and Methods - Exercises, 11. Convert Speed Units

Здравейте, колеги!

Имам проблем с форматирането на отговора на задачата от заглавието. Това е решението ми.

Тъй като в условието пише "Every number in the output should be precise up to 6 digits after the floating point", използвам {0:F7} в плейсхолъра, което е правилно според първия тест. Втория и третия обаче явно искат общо 7 цифри, без значение къде е десетичната запетая. Ще съм благодарен, ако някой бутне едно рамо.

 

1
Programming Fundamentals
DStefanow avatar DStefanow 112 Точки

Според мен идеята е да се ползва знак за форматиране на изхода - #,който премахва нулите след десетичната запетая. Ето моя код: http://pastebin.com/U8sfhS09 , който дава 100/100 но на единия нулев тест се разминава малко в отговора.

0
r3v3nan7 avatar r3v3nan7 365 Точки

Да не ти се разминава последното число на нулевия тест. Примерно при теб да се получава 1 , а на теста да е 2. Защото ако е така и аз съм със същия проблем. Така де той кода мина , но ми е любопитно дали и други имат подобен проблем с нулевия тест.

0
DStefanow avatar DStefanow 112 Точки

Абсолютно същия проблем, предполагам си е някаква грешка, която са направили в условието.

0
adrianvg avatar adrianvg 17 Точки

Според мен е грешка в самия judje, понеже в word-ския документ си го дава с 1. :)

2
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Пробвай просто да изкараш резултатите без да ги форматираш. 

2
borislav9212 avatar borislav9212 745 Точки

Аз не съм ги закръглял и ми минава задачата 100/100. Ето ми решението.

2
r3v3nan7 avatar r3v3nan7 365 Точки

Условието е малко подвеждащо. Има ли са предвид, че числото трябва да е с точност до 6 цифра след десетичната запетая,

което означава че спокойно можеш да ползваш тип данни float. f6 или f7 във форматния спецификатор е излишен. 

2
22/05/2016 23:25:55
paceva.eva avatar paceva.eva 5 Точки

Привет,

И аз имах същия проблем, но с # при това 7 пъти мина кода. Да условието не е много ясно колко след десетичната запетая знаци трябва да има, дори мислех че отговорите са грешни точно в тази част, но в последствие видях че всички отговори след това носат 0-ли и предположих, че се записва отговора докато няма нула. Ако има тя се маха. Най-добрия начин е както съветва и DStefanow е с #.

Успех

0
r3v3nan7 avatar r3v3nan7 365 Точки

Признавам си , че не го знаех това. Тоест че # маха нулите. Сега за първи път го виждам. Благодаря че го споделихте колеги :) Успех на всички :)

0
Stradjazz avatar Stradjazz 30 Точки

Което е не само подвеждащо, а директно грешка, защото има резултати със седем знака след запетаята, а самите те имат разминаване между печатния пример и Judge

0
cecosvidovski avatar cecosvidovski 58 Точки

Общо взето искат да работиш с float което работи с точност до 7 цифри (или до 6 цифри след запетаята)

Пример:
1.234567
12.34567
123.4567 и т.н.

... и другото което е искат от тебе да работиш с време преобразувано в часове! Ако ползваш секунди (както аз направих първоначално) отговора ти няма да съвпада с judge (тъй като ще ползваш по-големи числа които няма да са съвместими с float и ще загубиш точност).

0
29/09/2016 16:09:28
Stradjazz avatar Stradjazz 30 Точки

Работи 100/100 със секунди и float

0
Xapuu avatar Xapuu 25 Точки

Дайте някакъв жокер къде е грешката в http://pastebin.com/zJC78d97 , че чисто логически би трябвало да работи но judge му се сърди много :D

0
ambiorix avatar ambiorix 640 Точки

Здравей. h, m, s няма нужда да са double. Също така мисля че тази задача минава с float, но не и с double за изхода. Ето твоето решение фикснато: https://dotnetfiddle.net/5jTvZh

0
Stradjazz avatar Stradjazz 30 Точки

Промени си променливите на float и махни форматирането при печатането

0
Stradjazz avatar Stradjazz 30 Точки

Неправилни са ти някои от имената на променливите също, защото започват с главни букви

0
GeorgiStalev avatar GeorgiStalev 24 Точки

Просто искат да използваме float :) не форматирайте сменете всичко с float  и минава

0
20/01/2017 13:56:30
Stradjazz avatar Stradjazz 30 Точки

Защо тогава изрично се споменава double в съветите?

0
GeorgiStalev avatar GeorgiStalev 24 Точки

Лично мое мнение,

Направено е да ти дава грешка и да почнеш да търсиш в нета да форматираш и т.н. и в форума :) 

и натрупваш знания :)

0
Stradjazz avatar Stradjazz 30 Точки

Лично мое мнение.

Разбирам какво е намерението, но ако трябва сам да си търся знанията в интернет, какъв е смисълът от плащането на обучение?

0
Stradjazz avatar Stradjazz 30 Точки

Решението ти не може да се види, защото в Judge не дава достъп на други до твоите кодове. Използвай Patebin, моля

0
elenacholakova avatar elenacholakova 1 Точки

using System;


public class Program
{
    public static void Main()
    {
        float distanceInMeters = float.Parse(Console.ReadLine());
        float hours = float.Parse(Console.ReadLine());
        float minutes = float.Parse(Console.ReadLine());
        float seconds = float.Parse(Console.ReadLine());

        float speedMetersPerSecond = distanceInMeters / (hours * 60 * 60 + minutes * 60 + seconds);
        Console.WriteLine(speedMetersPerSecond);

        float speedInKmPerHour = (distanceInMeters / 1000) / (hours + minutes / 60 + seconds / 60 / 60);
        Console.WriteLine(speedInKmPerHour);

        float speedMilesPerHour = (distanceInMeters / 1609) / (hours + minutes / 60 + seconds / 60 / 60);
        Console.WriteLine(speedMilesPerHour);

    }
}

0
IvanTodorov91 avatar IvanTodorov91 1 Точки

Здравейте колеги защо се умножават часовете по 3600, ако може едно кратко обяснение.Благодаря.
int time = hours * 3600 + minutes * 60 + seconds; 

0
ambiorix avatar ambiorix 640 Точки

Така превръщаш часове в секунди (1 час е 60 минути по 60 секунди всяка = 3600 секунди).

0
23/01/2017 18:11:18
Romanov avatar Romanov 6 Точки

http://pastebin.com/QYthrSJr

Това успях да сътворя, но някои от отговорите ми се различават в последния знак след десетичната запетая  и Judge ми дава грешка. Математически моите отговори са верни, проверих ги. Логически също би трябвало да са верни и честно казано не знам къде ми е грешката.

Като пример давам първият тест. Входа е 10000 метра 0 часа 20 минути 30 секунди.

Това са 10000 метра за 1230 секунди =  8.130081300813008 м/с. Аз получавам отговор 8.130081, а Judge ми иска 8.130082. Сега това няма как да има двойка отзад, поне по законите на математиката. Другите отговори от този тест са ми верни, което също е странно, защото Км/ч е производна на м/с, която ми е грешна според системата...

0
24/01/2017 13:15:36
ivandm5 avatar ivandm5 17 Точки
using System;
using System.Linq;

public class StringsAndObjects
{


	public static void Main()
	{
		double distanceInMeters = double.Parse(Console.ReadLine());
		double hours = double.Parse(Console.ReadLine());
		double minutes = double.Parse(Console.ReadLine());
		double seconds = double.Parse(Console.ReadLine());

		double metersInMiles = distanceInMeters / 1609;
		double secondsInMinutes = seconds / 60;
		double minutesInHours = (minutes + secondsInMinutes) / 60;
		double totalHours = minutesInHours + hours;
	 
		 
		 
		double hoursInSecondsFirst = hours * 3600;
		double minutesInsecondsFirst = minutes * 60;
		double speedInMetersPerSecond = distanceInMeters / (hoursInSecondsFirst + minutesInsecondsFirst + seconds) ;
		double metersInKM = distanceInMeters * 0.001;
		double kmInHours = metersInKM / totalHours;
		double mph = metersInMiles/ totalHours;


		Console.WriteLine(String.Format("{0:0.000000}", speedInMetersPerSecond));
		Console.WriteLine(String.Format("{0:0.000000}", kmInHours));
		Console.WriteLine(String.Format("{0:0.000000}", mph));



	}
}

Ето и моя код нещо подобно изкарва.

0
Romanov avatar Romanov 6 Точки

Пробвах да преобразувам първо в часове, както колегите горе споменаха и наистина работи. Явно при преобразуването във секунди се губи нещо и стават грешки. Сега Judge ми дава 100/100.

0
spzvtbg avatar spzvtbg 581 Точки

http://pastebin.com/JAw1w18E - това решение ми дава 33 / 100.

някой може ли да помогне?

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