Loading...
Yordan92 avatar Yordan92 1 Точки

[Programming Basics] - Problem 12 .Speed Info

Здравейте!

Опитвам се да си открия грешката, но не мога. След въвеждането цифра над 50 получавам "average". Също така и при компилация получавам:

Unhandled Exception: System.FormatException: Input string was not in a correct format.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at SpeedInfo.Program.Main(String[] args)

Условие на задачата:

Да се напише програма, която чете скорост (десетично число), въведена от потребителя, и отпечатва информация за скоростта. При скорост до 10 (включително) отпечатайте slow”. При скорост над 10 и до 50 отпечатайте average”. При скорост над 50 и до 150 отпечатайте fast”. При скорост над 150 и до 1000 отпечатайте ultra fast”. При по-висока скорост отпечатайте extremely fast

Моето решение: 

https://pastebin.com/Qb13gE0V

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SpeedInfo
{
    class Program
    {
        static void Main(string[] args)
        {
           
            int speed = int.Parse(Console.ReadLine());

            if (speed <= 10)
            {
                Console.WriteLine("slow");
            }
            else if (speed > 10)
            {
                Console.WriteLine("average");
            }
            else if (speed <= 50)
            {
                Console.WriteLine("average");
            }
            else if (speed > 50)
            {
                Console.WriteLine("fast");
            }
            else if (speed <= 150)
            {
                Console.WriteLine("fast");
            }
            else if (speed > 150 )
            {
                Console.WriteLine("ultra fast");
            }
            else if (speed <= 1000)
            {
                Console.WriteLine("ultra fast");
            }
            else if (speed > 1000)
            {
                Console.WriteLine("extremely fast");
            }
        }
    }
}

 

 

Тагове:
0
Programming Basics
VasilValchanov avatar VasilValchanov 555 Точки

Условията трябва да се променят малко примерно:

 else if (speed > 10)
            {
                Console.WriteLine("average");
            }

тук трябва да проверяваш дали speed не е по голямо от 50 защото така влизаш в този случай на всички числа нат 10

 else if (speed > 10 && speed <= 50)
            {
                Console.WriteLine("average");
            }

и така за всички други.

0
06/06/2017 23:52:47
desislava777 avatar desislava777 165 Точки

Здравей, колега. Още в началото на проверките се забелязват грешки.

else if (speed > 10)
            {
                Console.WriteLine("average");
            }
            else if (speed <= 50)
            {
                Console.WriteLine("average");
            } това значи, че speed взема стойности от 10 (без да се включва 10) до плюс безкрайност. В противен случай ако speed<=50 това значи,че принадлежи от минус безкрайност до 50 включително.

 Получава се пресичане на интервали и в два противопожни случая да се отпечатва "average"... Нещо не се връзва. За да работи кода правилно, трябва тези две противопоставящи се условия да се обединят в едно общо условие по този начин

else if (speed>10 && speed<=50)

{

Console.WriteLine("average");

}

Същото се отнася за следващите проверки. Вместо

else if (speed > 50)
            {
                Console.WriteLine("fast");
            }
            else if (speed <= 150)
            {
                Console.WriteLine("fast");
            }

да бъде

else if (speed > 50 && speed<=150)
            {
                Console.WriteLine("fast");
            }        

и т. н.

Освен това, скоростта трябва да бъде от тип double, защото Judge го изисква, независимо как е дадено в условието на задачата. Ето един код:

https://pastebin.com/G72czfuH

0
Yordan92 avatar Yordan92 1 Точки

Благодаря много на всички получих 100/100 и разбрах задачата.

0
MLDimitrov avatar MLDimitrov 9 Точки

Вече сте писали решение,но виждам ,че всички наблягате на оператора && . А може да го спестите и да си съкратите формулата на условието. Моя код го направих мисля ,че по възможно най-сбития начин https://pastebin.com/DQWrV32G .

Който иска да го види само за инфото. Може и без short-circuit. :D 

0
Yordan92 avatar Yordan92 1 Точки

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

доста интересен начин за решаване на тази задача. Не съм очаквал че ще работи правилно. Благодаря научих нещо ново :).

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