Loading...
Elcherry avatar Elcherry 2 Точки

Проблем с Math.Round във VS

При решаването на задачата Преобразуване на Радиани в Градуси. Написах си кода, но когато го изпълнявам във VS не ми закръгля output стойността.
Judge системата прие кода за правилен.

http://pastebin.com/qPPiXQU8

Някакви идеи къде е проблема?

Тагове:
1
Programming Basics
RoYaL avatar RoYaL Trainer 6849 Точки

Math.Round работи по стойност, а не по референция. След като приеме една стойност, прави съответната операция върху нея и връща нова стойност. Тази нова стойност не запазваш или използваш никъде. Изчезва в небитието на 16-ти ред.

3
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Не мога да тествам в момента дали по този начин джъдж системата го приема, обаче като си написала този код:

    var C = (rad * 57.29578);

    Math.Round(C, 0);

    Console.WriteLine(C);

по този начин като напишеш Math.Round и тази стойност не се възприема за никоя променлива, а просто някъде си съществува, не се слага като нова стойност за дадена променлива. Не знам дали го обяснявам както трябва, но лично аз виждам два начина по които могат да се заместят последните два реда :

var C = (rad * 57.29578);
Console.WriteLine(Math.Round(C, 0));

или

 var C = (rad * 57.29578);
 var round = Math.Round(C, 0);
 Console.WriteLine(round);

Пак повтарям че в момента нещо джъдж системата не е стабилна и не мога да проверя дали се приемат тези решения...

0
25/01/2016 13:36:42
r3v3nan7 avatar r3v3nan7 365 Точки

@Elcherry,

RoYal  го е казал много точно. Math.Round(); използвана по такъв начин наистина си заминава в небитието. 

Затова или го запазваш в променлива, примерно double result = Math.Round(C,0); и после изпизваш променливата result

чрез Console.WriteLine(result); или другият вариянт е направо да изпишеш Math.Round(); , примерно

Console.WriteLine(Math.Round(C,0));  И между другото  в тази задача не трябваше ли да закръгляме до 2 числа след 

десетичната запетая, тоест Math.Round(C,2);  

0
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

r3v3nan7, това е 12-та задачка, там се закръгля до най-близкото цяло число. Иначе тази с 2 знака след десетичната точка беше от лицето на триъгълника. И на мен от време на време ми се мешат в главата :D

0
r3v3nan7 avatar r3v3nan7 365 Точки

Вярно.. объркал съм се, за което  се извинявам, но мисля че като цяло се разбра идеята. Просто Math.Round(); не се ползва така самостоятелно, а или се 

присвоява на променлива, или се изписва директно чрез Console.Writeline(); Още веднъж се извинявам за грешката.

0
RadiSlavova avatar RadiSlavova 0 Точки

При мен се получи по начина от задачата за Celsius - Farenheit :)

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var rad = double.Parse(Console.ReadLine());
            var deg = Math.Round((rad * 57.29578), 0);
            Console.WriteLine(deg);
        }
    }
}

0
Elcherry avatar Elcherry 2 Точки

Разбрах къде ми е грешката. Благодаря!

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