Loading...
DanailDrumev avatar DanailDrumev 9 Точки

Complex Conditional Statements-Volleyball

Здравейте.

Бих искал да ви помоля за малко помощ. Имам проблем със задачата Volleyball.

Преди да ви пиша прегледах коментарите във форума относно тази задача, но не открих нищо, тъи като се опитвам да я реша със "switch-case" конструкции.

Кода работи, компилира се успешно, но изходните данни са грешни.

Моля ви да погледнете кода и да ми дадете съвет, каде може да е грешката ми и какво мога да подобря в него. Или може би е по-добре да го напиша с "if-else" конструкции?

Благодаря на всички за отделеното време и внимание,

Ето условието на задачата и кода:

        "Влади е студент, живее в София и си ходи от време на време до родния град. Той е много запален по волейбола, но е зает през работните дни и играе волейбол само през уикендите и в празничните дни. Влади играе в София всяка събота, когато не е на работа и не си пътува до родния град, както и в 2/3 от празничните дни. Той пътува до родния си град h пъти в годината, където играе волейбол със старите си приятели в неделя. Влади не е на работа 3/4 от уикендите, в които е в София. Отделно, през високосните години Влади играе с 15% повече волейбол от нормалното. Приемаме, че годината има точно 48 уикенда, подходящи за волейбол.

Напишете програма, която изчислява колко пъти Влади е играл волейбол през годината. Закръглете резултата надолу до най-близкото цяло число (например 2.15  2; 9.95  9).

Входните данни се четат от конзолата:

  • Първият ред съдържа думата “leap” (високосна година) или “normal” (невисокосна).

  • Вторият ред съдържа цялото число p – брой празници в годината (които не са събота и неделя).

  • Третият ред съдържа цялото число h – брой уикенди, в които Влади си пътува до родния град."

 

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

namespace Volleyball
{
    class Program
    {
        static void Main(string[] args)
        {
            string year = Console.ReadLine().ToLower();
            var p = int.Parse(Console.ReadLine());
            var h = int.Parse(Console.ReadLine());

            switch (year)
            {
                case "normal": Console.WriteLine("{0:0}", (((48 - h) * 3 / 4) + (p * 2 / 3)) + h); break;
                case "leap": Console.WriteLine("{0:0}", ((((48 - h) * 3 / 4) + (p * 2 / 3)) + h) * 1.15); break;
            }
        }
    }
}
 

Тагове:
0
Programming Basics
TanyaZheleva avatar TanyaZheleva 354 Точки

Грешката ти е в сметките. Раздроби си ги на отделни променливи:

var left = 48 - weekends;
  var gamesInSofia = (double)left * 3 / 4;
  var holidayGames = (double)holidays * 2 / 3;
   var allPlayed = gamesInSofia + holidayGames + weekends;

и трябва да е 0.15 при leap и Math.Floor за закръглянето.

0
borislav9212 avatar borislav9212 745 Точки

Ето малко корегиран кода:

           string year = Console.ReadLine().ToLower();
            var p = int.Parse(Console.ReadLine());
            var h = int.Parse(Console.ReadLine());
            double volleyballOverall = h + (48 - h) * (3.0 / 4) + p * (2.0 / 3);
            switch (year)
            {
                case "normal": Console.WriteLine(Math.Floor(volleyballOverall)); break;
                case "leap": double leap = volleyballOverall + 0.15 * volleyballOverall;
                      Console.WriteLine(Math.Floor(leap)); break;
            }

0
heilin90 avatar heilin90 69 Точки

Съветът ми е да извадиш сметките от двата case-а, за да е по-четимо и по-лесно за проследяване. Трябва да промениш и това - 3/4 --> 3.0/4, 2/3 --> 2.0/3 и 1.15d, за да има какво да закръгляш надолу с Math.Floor.

0
DanailDrumev avatar DanailDrumev 9 Точки

Благодаря ви за помоща, разбрах каде е грешката.

Пожелавам ви всичко най-хубаво.

1
LifeOnMars avatar LifeOnMars 1 Точки

Моето решение е по-дългичко, но все пак се получи! :D

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

namespace Volleyball
{
    class Program
    {
        static void Main(string[] args)
        {
            string typeOfYear = Console.ReadLine();
            var holidays = int.Parse(Console.ReadLine());
            var homeWeekends = int.Parse(Console.ReadLine());

            double weekendsInSofia = (48 - homeWeekends) * 3.0 / 4;
            double gamesInSofiaInHolidays = holidays * 2.0 / 3;
            double fullWeekendPlusHolidays = weekendsInSofia + homeWeekends + gamesInSofiaInHolidays;

            if(typeOfYear == "normal")
            {
                double result = Math.Truncate(fullWeekendPlusHolidays);
                Console.WriteLine(result);
            }
            else if(typeOfYear == "leap")
            {
                double leap_Result = fullWeekendPlusHolidays * 0.15;
                leap_Result = leap_Result + fullWeekendPlusHolidays;
                double result = Math.Truncate(leap_Result);
                Console.WriteLine(result);
            }

        }
    }
}

 

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

хах и аз така го направих :Д http://pastebin.com/F9VJSvef

някак си по- прилежно ми е да си подреждам нещата отделно,по-лесно после проследявам къде и какво ако има грешка и да корегирам а и ми изглеждапо-добре :Д

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