Профил
Loading...
+ Нов въпрос
NedNikolov avatar NedNikolov 45 Точки

Щастливи числа - решение с три вложени цикъла

   Здравейте, 
 Целта е да намерим и отпечатаме всички четирицифрени числа от вида ABCD, за които: A+B = C+D. В книгата е посочен вариант с четири вложени цикъла, а след това се иска да измислим решение само с три, което аз лично не мога да го измисля и желая вашата помощ. Написах това: цък, но не смята както трябва, всички варианти на различно решение са добре дошли.
   Недялко

0
Programming Basics
RoYaL avatar RoYaL Trainer 6847 Точки

Не мисля, че има смисъл да въртиш d-то. Можеш да го получиш като извадиш от сбора на a+b, c-то. В смисъл като си на итерация в която a = 3, b = 2 и c = 1, очевидно, че d = 5 - 1 = 4

2
NedNikolov avatar NedNikolov 45 Точки

Вмъкнах това в цикъл "c"
                            int d = (a + b) - c;
                            Console.WriteLine(" " + a + " " + b + " " + c + " " + d);
, не се получи нищо, явно трябва да прочета отново главата за Цикли и след време да се опитам да измисля верен код, защото сега не мога.

0
remote87 avatar remote87 121 Точки

Само с това, което си вмъкнал няма да стане. Трябва ти проверка, дали d е по-голямо от 9 и съответно да не стане отрицателно число. Ако не се лъжа, това е решението:

            for (a = 1; a <= 9; a++)
            {
                for (b = 0; b <= 9; b++)
                {
                    for (c = 0; c <= 9; c++)
                    {
                        d = (a + b) - c;
                        if ((d <= 9) && ((a + b) == (c + d)) && (d >= 0) )
                        {
                            Console.WriteLine(" " + a + " " + b + " " + c + " " + d);
                        }                     
                    }
                }
            }

Не е пред мен условието на задачата и това решение е само по твоето обяснение. Дано съм разбрал правилно :)
Успех!

1
NedNikolov avatar NedNikolov 45 Точки

Същите числа, който се получават при този код:

for (int a = 1; a < 5; a++)
            {
                for (int b = 1; b < 5; b++)
                {
                    for (int c = 1; c < 5; c++)
                    {
                        for (int d = 1; d < 5; d++)
                        {
                            Console.WriteLine(" " + a + " " + b + " " + c + " " + d);
                        }
                    }
                }
            }
, трябва да се получат но само с три цикъла. Твоя код дава различна последователност от числа, следователно нещо трябва да се бутне, аз не мога да го измисля. 

П.С. Условието е в края на глава цикли в книгата, ако я имаш на електронен вариант е на страница 235.

0
remote87 avatar remote87 121 Точки

Сигурен ли си, че е различна последователност? Мисля, че специално ги проверявах. Да не би да се губят от буфера по-малките комбинации, тъй като са дооооста резултатите. Просто нямам възможност в момента да ползвам visual studio да проверя пак, но мисля че като увеличих конзолния прозорец ми излизат още резултати, а от книгата, до колкото видях, дават началните стойности ( в началото на цикъла ), а при нас излизат последните.

1
NedNikolov avatar NedNikolov 45 Точки

Извинявай, моя грешка. Кода ти изпълва условието. Благодаря много!

0