Софтуерно Инженерство
Loading...
svetoslav_0 avatar svetoslav_0 584 Точки

Опитай самостоятелно да я решиш, или поне дай частично решение и питай конкретен въпрос. Мога да ти дам решението, но не мисля, че ще разбереш как се решава задачата по-добре, отколкото ако си я решиш самостоятелно (поне частично както казах..). Ако все пак имаш въпрос по нея, питай :))

0
svetoslav_0 avatar svetoslav_0 584 Точки

Този код ми изглежда работещ..

0
denitsadudinska avatar denitsadudinska 0 Точки

Здравейте,

Може ли да обясните решението. Благодаря предварително.

0
TeodorStefanovPld avatar TeodorStefanovPld 964 Точки

Tака незнам условието но мога да ви обесня кода. Дават ви една променлива число n на чиято база трябва да изчислите  3 променливи rev rev1 rev2 .

Toва което прави вашия колега е чете числото n. Обявява си трите променливи rev rev1 rev2. След това правейки съответните действия според заданието изчислява стойностите на rev rev1 rev2 и ги присвоява.В случая като гледам това са делене събиране и модулно делене,като променливата r е за пазене на стойности.

След това вероятно трябва да направите някакви математически преобразования и числа с числата и техните възможни стойности.Затова прави 3 цикъла като 2 от тях са вложени. Предполагам че това е задача 5 от  басик изпит. Какво се случва в циклите.

aко приемем че rev= 5 rev1=8 rev2=11

първия цикъл на rev ще започне от 1. За тази единица в rev. Вложения цикъл на rev1 ще завърти всички стойности от 1-8 тоест ще се завърти 8 пъти и обходи всички възможности. А rev2 по същата логика ще се завърти 11 пъти за rev и 8х11 88 пъти за rev2. Това може би звучи объркващо но вложените цикли работят така.извъртяват всичките си стойности и тогава свършват. И всички тези операции ще се повторят докато  в цикъла на rev най-външния  i=rev=5 тогава всичко ще приключи.А console.writeline в най-вътрешния цикъл просто печата резултата от всички комбинации които се получават като колегата е комбинирал комбинациите от числа и операциите с тях според зададените ви условия.

Моя съвет е свалете си кода закачете го на VS пуснете дебъгера с f5 и няколко бреак поинта и следете как се променят променливите...и без това дебъгването е важно умение,колкото по-скоро го усвойте и развиете ще ви помогне.

0
12/01/2018 15:00:04
denitsadudinska avatar denitsadudinska 0 Точки

Здравейте,

Благодаря много за детайлния отговор. 

Това и условието.

https://judge.softuni.bg/Contests/Practice/Index/888#5

На мен не ми е ясна тази част от условието на задачата.

 

  •   int r = left % 10;

                rev = rev + r;

                left = left / 10;

 

                r = left % 10;

                rev1 = rev1 + r;

                left = left / 10;

                r = left % 10;

                rev2 = rev2 + r;

 

0
TeodorStefanovPld avatar TeodorStefanovPld 964 Точки

така ясно. Значи дават ви трицифрено число :Д  да използваме едно от примера

324 и ви казват почнете да го обработвате от дясно наляво тоест 4 2 3 и направете нещо с тях.

така човека взима първото число което е 4 което делено модулно на 10 си е 4 и получава първото число

след това дели  324 / 10 за да му остане 32 и отново повтаря цялата операция и му остава 2 за rev2,и след това отново дели на /10 за да му остане 3. и него го присвоява в rev3

вече има 3те числа 4 2 3, и си прави циклите от i до 4 от и до 2 и от i до 3

и после- по логиката която обясних по-горе,завърта циклите външния му е до 4 втория до 2 и наи-вътрешния до 3

и накрая печата всичките им пермутации. когато външния цикъл стигне до 4. Всичко свършва.

0
14/01/2018 20:49:40
Angelovasilviya avatar Angelovasilviya 3 Точки

Ето моето решение. В Javascript е, но всичко е много подобно и се разбира.

https://pastebin.com/AkQEDpKc

0
bg_bundy avatar bg_bundy 1 Точки

Ето го решението написано  на  JAVA

 

https://pastebin.com/gc59muHX

 

Коментарите са за обяснение на синтаксиса и логиката използвана в решението.

Надявам се да съм помогнал.

0