Софтуерно Инженерство
Loading...
+ Нов въпрос
Leprikona avatar Leprikona 106 Точки

Задача Game of Names от Programming for Beginners 24 April 2016

Здравейте стигнах до тук със задачата. Как мога да намеря резултата на всеки един от тях и да му изпиша името?

Благодаря! :)

using System;

class Program
{
    static void Main()
    {
        int input = int.Parse(Console.ReadLine());
        for (int i = 0; i < input; i++)
        {
            string name = Console.ReadLine();
            int number = int.Parse(Console.ReadLine());
            foreach (char c in name)

                if (c % 2 == 0)
                {
                    number += c;
                }
                else
                {
                    number -= c;
                }
            Console.WriteLine(number);
        }
    }
}

Тагове:
borislav9212 avatar borislav9212 745 Точки

Здравей,

Трябва да си инициализираш int maxSum = int.MinValue и един празен string newName = string.Empty; и една sum която е равна на number който парстваш на конзолата. След това използваи вместо foreach - for цикъл. до дължината на stringa. във if  проверяваш дали (name[j] % 2 == 0) - sum += name[j]; , else изваждаш  sum -= name[j]; След това проверяваш с един if  дали "sum" е по-голпма от "maxSum" и накрая отпечатваш. Стига с толко подсказки, нарочно не ти давам решението наготово, хубаво е сам да стигнеш до него за да го разбереш, ако има проблеми пиши пак.

 

0
vancho avatar vancho 430 Точки

Ами никъде не виждам да пазиш сумите на играчите. Това, което правиш е че четеш името, четеш точките събираш или вадиш стойността на чара и принтираш. Трябва ти масив или лист, в който да добавяш резултата на играча и един за имената например. Съответно на които индекс от единия масив ти е името, на същия индекс от другия са ти и точките на съответния играч (име). После да намериш максималният резултат на играч и да изкараш вече резултата. Успех, ако не ти помага обяснението и искаш малко код, пиши.

-1
04/05/2016 22:00:39
IskrenPenev avatar IskrenPenev 177 Точки

преди да започнеш да въртиш цикъла си направи една променлива long maxPoints  = long.MinValue; и един празен string winner = "";

когато приключи вътрешният ти цикъл (foreach-a) проверяваш дали number е по-голямо от maxPoints  - ако е  maxPoints = number   и winner = name.

когато прочетеш дадените n - реда, принтираш winner  и maxPoints 

(може да се реши и с масив/списък, но в случая е излишно да съхраняваш всички данни)

P.S ползвай long, че може да не се събереш в int 

0
04/05/2016 22:47:54
ihristov22 avatar ihristov22 SoftUni Team 28 Точки

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

Решавам въпросната задача опитвайки се посредством използването на масив. Имам затруднение. Може ли някой да ми обясни, къде ми е грешката и защо на един от редовете при парсване на InitialScores ми излиза Exeption input string not in the correct format.

Благодаря.

https://github.com/ihrist/SoftwareUniversity-ProgrammingFundamentals-Homeworks/blob/master/GameOfNames/Program.cs

0
Alex0101 avatar Alex0101 374 Точки

Здравей колега, пусни моля те линк към условието и джъджа, за да не ровим 10 мин

2
IskrenPenev avatar IskrenPenev 177 Точки

1. Не използваш масива който заявяваш в началото (макар че той е излишен).

2. Щом в началото си решил да ползваш long, ползвай само long, махни тези int-ве.

3. Недей да сравняваш сумата със >=, а само с по-голямо.

4. Никъде не ползваш променливите winner и maxPoints, нито променяш тяхната стойност - от началото до края winner е празен стринг, а maxPoints е long.MinValue

5. Както си написал решението си, когато намериш сума по-голяма на максималните точки(long.MinValue) ти печаташ, а трябва да печаташ само накрая, когато си преминал през целия цикъл. (В момента приложението ти след всеки прочетен ред ще отпечатва съответния играч и точките му като "победител")

П.П Приложението ти не дава никаква грешка (Exception), явно му подаваш невалиден вход, Изхода е както написах по-горе.

 

2
26/05/2016 11:29:58