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

Проблем със задача 06. The Most Powerful Word от изпита 6/7 Юли 2019

Проблем с кода на задача 06. The Most Powerful Word от изпита на 6/7 Юли 2019 

Задача 6. Най-силната дума

 За Лора думите притежават голяма сила. Тя те моли да измислиш алгоритъм, с който да откриеш коя е "най-силната" дума. До получаване на команда "End of words" ще се четат от конзолата думи. За да се открие силата на всяка една, трябва да се намери сборът от ASCII стойностите на символите, от които се състои думата. Ако започва с гласна буква - 'a', 'e', 'i', 'o', 'u', 'y' (или техните еквивалентни главни букви), полученият сбор трябва да се умножи по дължината на думата, в противен случай, да се раздели на дължината и да се закръгли до най-близкото цяло число надолу.

Вход

До получаване на команда "End of words" се чете по един ред от конзолата:

  • дума – текст

Изход

След приключване на програмата се печата на един ред думата с "най-голяма сила":

  • "The most powerful word is {думата с най-голяма сила} - {силата на думата}"

В Judge ми дава 60/100 и не мога да си хвана грешката, защото примерните входове са ок и вървят във Visual studio. Моля някой да помогне като ми каже къде е грешката в моя код, не искам готово решение. 

Ето го и моя код : 

using System;

namespace TheMostPowerfulWord
{
    class Program
    {
        static void Main(string[] args)
        {
            double sum = 0;
            double maxSum = double.MinValue;
            string mostPowerful = "";
            while (true)
            {
                string word = Console.ReadLine();
                if (word == "End of words")
                {
                    break;
                }
                sum = 0;
                for (int i = 0; i < word.Length; i++)
                {
                    sum += word[i];
                }
                if (word[0] == 'a' || word[0] == 'e' || word[0] == 'i' || word[0] == '0' || word[0] == 'u' || word[0] == 'y' || word[0] == 'A' || word[0] == 'E' || word[0] == 'I' || word[0] == 'O' || word[0] == 'U' || word[0] == 'Y')
                {
                    sum = sum * word.Length;
                }
                else
                {
                    sum = Math.Floor(sum / word.Length);
                }
                if (sum > maxSum)
                {
                    maxSum = sum;
                    mostPowerful = word;
                }
            }
            Console.WriteLine($"The most powerful word is {mostPowerful} - {maxSum}");
        }
    }
}

Тагове:
0
Programming Basics
daniel_dimitrov5 avatar daniel_dimitrov5 30 Точки
Best Answer

Здравей,

Грешката е този ред. Погледни внимателно къде какво проверяваш :) В проверкана за "o" пише 0(нула). Това е грешката.

if (word[0] == 'a' || word[0] == 'e' || word[0] == 'i' || word[0] == '0' || word[0] == 'u' || word[0] == 'y' || word[0] == 'A' || word[0] == 'E' || word[0] == 'I' || word[0] == 'O' || word[0] == 'U' || word[0] == 'Y')

 Иначе аз бих направил това със switch case, така е много дълго и гадно. Удобно е да се използва метод ToLower() или ToUpper(), за проверка за гласна буква, така се спествяат половината проверки, защото всички букви ще бъдат или главни или малки и съответно ще провериш само за тях:)

1
Paco8409 avatar Paco8409 1 Точки

Здравей,

Много благодаря за бързия отговор! Изпита ми за C# Basics е на 21/22 Ноември и гледам да изреша всичко налично, за да съм максимално подготвен. Засега има светлина в тунела (поне относно логиката) :) Имам да поизчистя дребни детайли и смятам, че ще съм готов. Благодарности още веднъж. Хубава вечер!

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