Loading...
ioanna.konova avatar ioanna.konova 47 Точки

Задача The song of the wheels от Nested Loops - More Exercises - 60/100 в judge

Здравейте отново от мен, колеги,

Някой може ли да ми помогне в откриването на грешката ми в кода? Примерните изходи ми излизат, но judge ми дава 60/100.

Условието:

12.Песента на колелетата

Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:

„Парола ще получиш, ако знаеш  едно цяло число, контролна стойност  се нарича то,

почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”

Паролата има формат: "abcd" и контролната стойност трябва да е равна на  a*b + c*d , но трябва да бъдат спазени следните условия:

  • при намирането на а и b: a < b
  • при намиране на  c и d: c > d
  • a, b, c и d са числа в интервала [1 - 9]

Каруцата  има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.

В случай, че НЕ се намери такова число,  отпечатва сеNo!“.

Вход

От конзолата се чете едно цяло число (контролната стойност): Mцяло число в интервала [4 … 144];

Изход

Отпечатването на конзолата зависи от резултата:

  • Ако са намерени четворки числа (аbcd), отговарящи на условието, ги отпечатваме всичките с разделител интервал: “{а}{b}{c}{d} ”
  • Отпечатва се един от двата реда на нов ред:
    • Ако съществува четвърта четворка се отпечатва: „Password: {а}{b}{c}{d}“
    • Ако НЕ са намерени такива числа или няма  четвърта четворка отпечатваме: “No!”

Примерен вход и изход

Вход

Изход

Обяснения

11

 

1291 1342 1381 1471 1532 1561 1651 1741 1831 1921 2351 2431

Password: 1471

Започваме да проверяваме числата последователно:

{1} {1} {1} {1};   {1} {1} {1} {2};   {1} {1} {1} {3};   …;   {1} {2} {9} {1}; …

четворката 1291 спазва условието и отпечатваме и т.н.

Вход

Изход

Вход

Изход

Вход

Изход

139

No!

110

 

6987 7896

No!

55

 

1786 2595 3585 3974 4575 4793 5754 5853 5952 6871

Password: 3974

Тагове:
0
Programming Basics 10/08/2021 16:21:04
svephoto avatar svephoto 1191 Точки

Здравей, ioanna.konova,

 

Няколко идеи:

1. Добави си допълнителни променливи в началото преди цикъла, да речем така:

            int i = 0;
            int j = 0;
            int k = 0;
            int l = 0;

            bool theFourth = false;
            bool row = false;

2. Проверката if ((M >= 4) && (M <= 144)) не ти е нужна, остави си само 4-те for-цикъла.

3. В първата if-проверка си сетваш row = true;, a във втората - theFourth = true; и след него i = first; j = second; k = third; l = fourth; и махаш password = $"{first}{second}{third}{fourth} ";, не ти трябва и като променлива в началото.

4. Накрая:

- if (row) -> печаташ само празен ред;

- if (theFourth) -> печаташ "Password: {i}{j}{k}{l}";

- и в else-a си остава "Nо!".

 

Успех!

 

2
10/08/2021 17:29:29
ioanna.konova avatar ioanna.konova 47 Точки

Благодаря ти много! Но ще можеш ли да ми обясниш защо моето решение е грешно, след като ми се получават примерните изходи? Защото мисля, че просто да препиша твоите препоръки само, за да получа 100/00, не е ок.

1
svephoto avatar svephoto 1191 Точки

Сега се задълбочих повече върху твоето решение и всъщност то ще проработи напълно коректно само с премахване на проверката if ((M >= 4) && (M <= 144)), защото реално нямаш нужда от такава - по условие е гарантирано, че контролната стойност ще бъде в тези граници. И освен това има нужда от добавяне на Console.WriteLine(); и в elsa накрая, защото и тук трябва да минеш на нов ред както и в if-a преди това:

 

            else
            {
                Console.WriteLine();
                Console.WriteLine("No!");
            }

 

Иначе е много добре, че не искаш просто да преписваш моите препоръки - поздравления за това, така и трябва. А това, че ти се получават примерните изходи не е точно така, защото точно при третия пример "No!" остава на същия ред след "6987 7896" и тук вече гърми. Това би трябвало да го видиш при изпълнението на този пример от условието. Също и ако имаш коректни изходи на всички примери от условието не означава, че и всички останали заложени тестове ще минат - дадените в условието примери покриват само част от всички други случаи, които се тестват от Judge. Надявам се да съм успял да ти обясня каквото имаше нужда.

1
10/08/2021 21:02:48
ioanna.konova avatar ioanna.konova 47 Точки

Дааааааа, изключително много ти благодаря за отделеното време! :))))

1
svephoto avatar svephoto 1191 Точки

Моля. yes laugh

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