17.12.2017 Multiply table
Някой може ли да даде решене на последната задача от този изпит.
Благодаря
Някой може ли да даде решене на последната задача от този изпит.
Благодаря
Опитай самостоятелно да я решиш, или поне дай частично решение и питай конкретен въпрос. Мога да ти дам решението, но не мисля, че ще разбереш как се решава задачата по-добре, отколкото ако си я решиш самостоятелно (поне частично както казах..). Ако все пак имаш въпрос по нея, питай :))
https://pastebin.com/ZY9pmGsw
Този код ми изглежда работещ..
Здравейте,
Може ли да обясните решението. Благодаря предварително.
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 и няколко бреак поинта и следете как се променят променливите...и без това дебъгването е важно умение,колкото по-скоро го усвойте и развиете ще ви помогне.
Здравейте,
Благодаря много за детайлния отговор.
Това и условието.
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;
така ясно. Значи дават ви трицифрено число :Д да използваме едно от примера
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. Всичко свършва.
Ето моето решение. В Javascript е, но всичко е много подобно и се разбира.
https://pastebin.com/AkQEDpKc
Ето го решението написано на JAVA
https://pastebin.com/gc59muHX
Коментарите са за обяснение на синтаксиса и логиката използвана в решението.
Надявам се да съм помогнал.