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

Тия задачи нещо не ги разбирам?

Здравейте, Programming Basics свърши и реших да решавам миналите приемни изпити, като упражнение.

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

 

Ето пример за задача, която току що се пробвах да реша: https://judge.softuni.bg/Contests/Practice/Index/179#5 (задача 06.)

Моето неуспешно решение: https://docs.google.com/document/d/1ttLXTPadnNpeBm6xghoA3GMb9Q4iWleD-j6MBLUAaSk/edit?usp=sharing

 

Какво правя грешно и някой може ли да ми прати обяснение?

Тагове:
bubalik avatar bubalik 33 Точки

Ето и на С#:

using System;


namespace Magic_numbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int x = 1;
            string print = "";

            for (var i1 = 1; i1 < 10; i1++)
            {
                for (var i2 = 1; i2 < 10; i2++)
                {
                    for (var i3 = 1; i3 < 10; i3++)
                    {
                        for (var i4 = 1; i4 < 10; i4++)
                        {
                            for (var i5 = 1; i5 < 10; i5++)
                            {
                                for (var i6 = 0; i6 < 10; i6++)
                                {
                                    x = i1 * i2 * i3 * i4 * i5 * i6;
                                    if (x == n)
                                    {
                                        print = print + i1 + i2 + i3 + i4 + i5 + i6 + " ";
                                    }
                                }
                            }
                        }
                    }
                }
            }
            Console.WriteLine(print);
        }
    }
}
 

0
bubalik avatar bubalik 33 Точки

Проверките за числото се правят в най-вътрешния цикъл.

0
RifatCholakov avatar RifatCholakov 52 Точки

Решението на задачата за магическите числа следва същата концепция (отново трябва да генерираме всички комбинации за n елемента). Следвайки тези стъпки, опитайте да решите задачата сами.

  • Декларирайте и инициализирайте променлива от целочислен тип int и прочетете входа от конзолата.
  • Вложете шест for цикъла един в друг, по един за всяка цифра на търсените 6-цифрени числа.
  • В последния цикъл, чрез if конструкция проверете дали произведението на шестте цифри е равно на магическото число.

В предходната глава разгледахме и други циклични конструкции. Нека разгледаме примерно решение на същата задача, в което използваме цикъла while. Първо трябва да запишем входното магическо число в подходяща променлива. След това ще инициализираме 6 променливи - по една за всяка от шестте цифри на търсените като резултат числа.

След това ще започнем да разписваме while циклите.

  • Ще инициализираме първата цифраd1 = 0.
  • Ще зададем условие за всеки цикъл: цифрата да бъде по-малка или равна на 9.
  • В началото на всеки цикъл задаваме стойност на следващата цифра, в случая: d2 = 0. При вложените for цикли инициализираме променливите във вътрешните цикли при всяко увеличение на външните. Искаме да постигнем същото поведение и тук.
  • В края на всеки цикъл ще увеличаваме цифрата с едно: d++.
  • В най-вътрешния цикъл ще направим проверката и ако е необходимо, ще принтираме на конзолата.

Нека премахнем if проверката от най-вътрешния цикъл. Сега, нека инициализираме всяка променлива извън циклите и нека изтрием редовете dx = 0. След като стартираме програмата, получаваме само 10 резултата. Защо? А ако използвате do-while? В случая този цикъл не изглежда подходящ, нали? Помислете защо. Разбира се, можете да решите задачата и с помощта на безкраен цикъл.

Както виждаме, един проблем можем да решим с различни видове цикли. Разбира се, за всяка задача има най-подходящ избор. С цел да упражните всеки цикъл - опитайте се да решите всяка от следващите задачи с всички изучени цикли.

 

Прочети тове ще ти е много полезно - https://csharp-book.softuni.bg/chapter-07-complex-loops-exam-problems.html#задача-магически-числа

0
29/11/2017 13:31:01
krakena99 avatar krakena99 1 Точки

Благодаря на всички отговорили, ще си проверя и поправя задачата по-късно.

0