Loading...
NedNikolov avatar NedNikolov 45 Точки

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

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

0
Programming Basics
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
remote87 avatar remote87 121 Точки

Сега ми дойде на ум. Чудя се дали не е по-добре извън фор циклите да се декларира uint d = uint.MinValue и да се работи само с uint като по този начин ще се спести една проверка ( d >= 0 ) в най-вътрешния цикъл, тъй като очевидно няма как да е отрицателна всяка една от позициите на числата и ще се получи:

            uint a = 1;
            uint b = 0;
            uint c = 0;
            uint d = uint.MinValue;

            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)))
                        {
                            Console.WriteLine(" " + a + " " + b + " " + c + " " + d);
                        }                     
                    }
                }
            }

 

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