Loading...
perov93 avatar perov93 0 Точки

04. Phone - Мога ли да помоля за обяснение на задачата.

Колеги, ако има някой които е решил тази задача. Моля да помоне с решението и да обясни. https://judge.softuni.bg/Contests/Compete/Index/422#3

Задачата има сходно решение с Phonebook, и е нужно да се напишат новите два метода, но не мога да се справя с тях.

Благодаря!

Тагове:
0
Programming Fundamentals
akkirilov avatar akkirilov 24 Точки

По първия нулев тест от условието:

Първият масив е от три номера, съответно с индекси: 

[0] 0888888888

[1] 0888123456

[2] +359886001122

Вторият масив е от три имена:

[0] Nakov

[1] Ivan

[2] Maria

 

Като получиш име, в случая първото е "Ivan", търсиш индекса във втория масив, на който съответства името. Същият индекс в първия масив ще ти изведе и номера. В случая индекса е [1].

 

 

1
NonaG avatar NonaG 111 Точки

От снощи съм зациклила на 10 т., ако може да ти помогне, ето: http://pastebin.com/y325Hmjz

Ако намериш какво не съм хванала от условието, моля пиши. В момента съм нарочила това изречение:

  • The names and numbers will always be separated by exactly one whitespace

 че ако има телефон или име със спейсове отзад, програмата ми не ги изписва при печатането /нпр. 888   .../, ама дали е това?!

0
ivanlutov avatar ivanlutov 5 Точки

Колежке ето го, мойто решение http://pastebin.com/cbuLa1VK . А това означава, че няма да има повече от едно празно място (space). Понеже има задачи където има по няколко space и трябва да се изчистят с 

StringSplitOptions.RemoveEmptyEntries
1
ambiorix avatar ambiorix 640 Точки

Здравейте. Хванах се да напиша задачата, защото е доста фундаментална за работа с индекси и методи.

Ето решението ми с включени коментари за нещата които може да се сторят по-сложни. Работи и за двете задачи, защото втората е реално надграждане на първата: https://dotnetfiddle.net/WHBtcs

 

Както повечето задачи със * и тук трябва малко играчка с индексите и може би малко търсене в интернет(за TryParse() например). Не съм ползвал речници и LINQ, защото те се учат по-натам. С тях задачата става в пъти по-лесна.

Утре съм на линия съм ако има въпроси.

1
14/02/2017 22:35:28
ivanlutov avatar ivanlutov 5 Точки

Ето го и мойто решение на задачата: 
http://pastebin.com/cbuLa1VK 
дава 100/100.

1
mkpetrov avatar mkpetrov 8 Точки

Колеги може ли някои да ми подскаже къде ми е грешката на моят код за тази задача ?

Кода ми е: http://pastebin.com/gDfQKfUJ

Минават си всички примери без проблем ,но останалите тестове всичките гърмят .

Може ли малко помощ ?

0
NonaG avatar NonaG 111 Точки

Пробвай да ползваш while - цикъл, завършващ с "done", нищо че нулевите  ти минават. Може от това да е.  Или си провери всички if-ове един по един.

При мен беше, че съм изпуснала един Math.Abs  при (difference) % 2 == 1 в единия if... В повечето случаи е една дреболийка, дето ти коства часове...

0
mkpetrov avatar mkpetrov 8 Точки

Забелязах ,че не съм добавил "done" , но снощи и това добавих и пак не става . Ще трябва да си измисля някакви си мои странни входове различни от примерните и да видя какво става тогава . 

0
Stradjazz avatar Stradjazz 30 Точки

Някой може ли да помогне със съвет защо ми гърми на 113 линия. Обажданията работят без грешка, но смс гърми. Видях алтернативните решения, но не ми помагат, искам да разбера къде греша аз.

Ето кода

0
NonaG avatar NonaG 111 Точки

public static long DifferenceOfDigits(string number)
        {
            int[] digits = number.Split().Select(int.Parse).ToArray();
            long difference = digits[0];

for (int i = 1; i < digits.Length; i++)

Трябва да е оттук - нпр. string number=888, тогава digits ти е int-масив с един елемент вътре - 888. Затова програмата изобщо не влиза в цикъла и ти връща стойността на difference точно, както си я задал - 888.

Трябва да стане:

char[] digits = number.ToCharArray();
            long difference = 0;

И тогава трябва да вземеш на digits[i] стойността й като символ,не като поредния й номер в таблицата, а  нпр. char.GetNumericValue(digits[i]), след което програмата няма да ти приеме long-а, но нататък ще се оправиш. :)

1
Stradjazz avatar Stradjazz 30 Точки

Много благодаря!

В крайна сметка стана ето така:

public static long DifferenceOfDigits(string number)
        {
            char[] digits = number.ToCharArray();
            long difference = (long)char.GetNumericValue(digits[0]); 
            for (int i = 1; i < digits.Length; i++)
            {
                char.GetNumericValue(digits[i]);
                difference -= digits[i];
                }
            difference = Math.Abs(difference);
            return difference;
        }

1
19/02/2017 10:29:51
morgan avatar morgan 30 Точки

Ето и от мен едно решение с 4 методчета. Дано да е от полза!

http://pastebin.com/nhQ3xWR9

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