Задача Кодиране - Nested Loops
Здравейте, може ли малко помощ за тази задача, някакво примерно решение, защото съм от онлайн записаните и не съм присъствал на упражненията и яко зациклих. Благодаря предварително.
1.Кодиране
Напишете програма, която чете от конзолата едно цяло число. На конзолата трябва да се отпечатат толкова на брой редове, колкото цифрено е числото. Като на първи ред съответстват единиците, на втори ред десетиците, на трети ред стотиците от числото и т.н., докато свършат цифрите от числото. На всеки ред трябва да се отпечата символ, който отговаря на следните условия:
- символът, който трябва да се отпечата на даден ред се намира от ASCII таблицата. Неговият десетичен ASCII код се намира като към цифрата от въведеното число, която съответства на даден ред се прибави 33
- символът се отпечатва толкова на брой пъти колкото е цифрата, съответстваща за този ред
- ако за даден ред съответства цифра 0 на този ред се отпечатва еднократно "ZERO"
Примерен вход и изход
Вход |
Изход |
Обяснения |
|
2049 |
********* %%%% ZERO ## |
Числото 2049 е четирицифрено следователно ще отпечатваме 4 реда. На първи ред съответства цифрата 9. Към 9 прибавяме 33 и получаваме 42. Това е десетичният ASCII код на символът, който трябва да отпечатаме на първия ред. От ASCII таблицата намираме, че на 42 кореспондира символ *. Понеже на първи ред съответства цифра 9 отпечатваме 9 на брой *. Цифрата 4 е за втори ред. 4+33=37. От ASCII таблицата намираме, че символът за печат е %. Отпечатваме 4 на брой %. На трети ред съответства цифра 0. В този случай не търсим нищо в ASCII таблицата и на този ред отпечатваме еднократно ZERO. Последната цифра от числото е 2. 2+33=35. От ASCII таблицата намираме символа за печат- # и го отпечатваме н 2 пъти. |
|
Вход |
Изход |
Вход |
Изход |
9347439 |
********* $$$ %%%% ((((((( %%%% $$$ ********* |
123456789 |
********* )))))))) ((((((( '''''' &&&&& %%%% $$$ ## " |
Подсказки:
- Използвайте метода ToString, за да превърнете прочетеното число в стринг и след това запазете дължината му в променлива с метода Length. Потърсете информация за тях в интернет.
- За да вземете последната цифра на числото, го разделете модулно на 10 (num % 10) и я запазете в една променлива. След това извадете поледната цифра от първоначалното число и го разделете на 10 (num / 10), за да може следващия път отново да вземете последната цифра.
Тествайте решението си в judge системата: https://judge.softuni.bg/Contests/Compete/Index/1165#3.
Благодаря много , само не разбрах , от каде е това -48? Ако може да ми обясниш за да го разбера , благодаря.
Ако вземем 2049 за тест. И започнем loop отзад напред. По ACSII 9 = 57. За да работи if теста за Zero ни трябва -48 за да приравним ASCII с релно число. По ASCII 0 = 48.
Ооо, да сега зацепих. Благодаря много за отделеното време и обяснението! Тези чарове са ми пълен хаос ще отделя повече време на тях.