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

Някой да е решил The Song of the wheels ?

Песента на колелетата
Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:
„Парола ще получиш, ако знаеш  едно цяло число, контролна стойност  се нарича то,
почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”
Паролата има формат: „abcd“ и контролната стойност трябва да е равна на  a*b + c*d , но трябва да бъдат спазени следните условия:
при намирането на а и b: a < b
при намиране на  c и d: c > d .
Каруцата  има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.
В случай, че НЕ се намери такова число,  отпечатва се „No!“.
Вход
От конзолата се четe едно цяло число (контролната стойност): 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

 

Тагове:
traykova44 avatar traykova44 93 Точки

Здравейте, може ли помощ за С #

това ми е кода https://pastebin.com/gyxZAnTF

Не мога да разбера къде греша, трябва да изкарам четвъртото число най отдолу, а не там където се пада четвърто.

Може ли някой да каже как?

 

 

0
simona_st avatar simona_st 38 Точки

Аз съм използвала булева променлива, която да запомни дали сме на четвъртото число. Нея можем да я изкараме извън цикъла и така ще имаме работеща if-проверка извън цикъла. 

И също съм сложила друга int променлива, която да помни четвъртата парола password = 1000 * a + 100 * b + 10 * c + d; (взимаме хилядните, стотните, десетиците и единиците).

Ето ми решението https://pastebin.com/QgTDcQbM 

Сигурно има и по-добри решения, но това работи. 

И не забравяй else, което да изписва "No!".

 

1
14/12/2017 11:30:19
pace71 avatar pace71 -4 Точки

ПЕСЕНТА  НА КОЛЕЛЕТАТА –PASS  ot CTR==4

Scanner scanner=new Scanner(System.in);

        int num=Integer.parseInt(scanner.nextLine());

        int a=0;

        int b=0;

        int c=0;

        int d=0;

       int ctr=0;

        for(int i=1;i<=num;i++)

       for(int j=1;j<=num;j++)

           for(int k=1;k<=num;k++)

               for(int l=1;l<=num;l++){

        System.out.printf("%s%s%s%s ",i,j,k,l);

         System.out.println();

        ctr++;

       

        if(ctr==4){

        a=i;

        b=j;

        c=k;

        d=l;

        }

        }

        if(ctr>=4){

        System.out.printf("PASS IS %s%s%s%s ",a,b,c,d);

      

        }else{

        System.out.println("Nqma PASS ");

 

        }

        }

       

 

        

    }

   

 

0
svetlozarned avatar svetlozarned 2 Точки

Здравей,

това е моето решение:

https://pastebin.com/BjhC53Mu

Създавам променлива rightNumber: брояч за числото, което отговаря на условията.

След това на всеки цикъл, смятам колко е сборът на 1-то и 2-то число и на 3-то и 4-то както и на 4-те числа заедно.

После проверявам кога отговарят и на 2-те условия и дали има 4-то такова.


                            if (control == sum && i < i2 && i3 > i4)
                            {
                                rightNumber++;
                                Console.Write("{0}{1}{2}{3} ", i, i2, i3, i4);

                                if (rightNumber == 4)
                                {
                                    password = string.Format("{0}{1}{2}{3}", i, i2, i3, i4);
                                }
                            }

 

 

0
Cherkezova avatar Cherkezova 4 Точки

Това е моето решение: 

int m = int.Parse(Console.ReadLine());

            string password = null;

            int ctrValue = 0;


            while (m < 4 || m > 144)
            {
                Console.WriteLine(" Не е контролна стойност");
                m = int.Parse(Console.ReadLine());
            }


            for (int a = 1; a <= 9; a++)
            {
                for (int b = 1; b <= 9; b++)
                {
                    for (int c = 1; c <= 9; c++)
                    {
                        for (int d = 1; d < 9; d++)
                        {

                            if (a < b && c > d)
                            {
                                int calculation = a * b + c * d; // izhislqvame chislata ako otgovarqt na uslovieto

                                if (calculation == m) //  kontrolnata stoinost trqbva da e ravna na a*b + c*d  
                                {
                                    Console.Write($"{a}{b}{c}{d} "); // otpechatvame  chetvorkite chislata 

                                    ctrValue++; // sus vsqko otpechatvane controlnata stoinost se uvelichava

                                    if (ctrValue == 4) // ako  ima chetvurto chislo to e parolata
                                    {
                                        password = $"{a}{b}{c}{d}";
                                        
                                    }

                                }
                            }

                        }
                    }
                }
            }

            if (ctrValue > 0) Console.WriteLine(); //  proverkata e za da moje kogato controlnata stoinost e po golqma ot 0, rezultata da se izpisva na sledvashtiq red, zashtoto taka se iska v uslovieto.

            if (password != null)
            {
               
                Console.WriteLine($"Password: {password} ");
            }

            else if(password == null || ctrValue < 0)
            {
                
                Console.WriteLine("No!");
            }

0