🟡 Մարիոյի աշտարակ
Դե ինչ, փոքրիկ վարժությունները հաջողությամբ լուծելուց հետո այժմ ժամանակն է գրել լիակատար ծրագիր։ Երևի թե բոլորդ էլ կհիշեք, Նիթենդո ընկերության հայտնի «Մարիո» խաղը։ Այդ խաղում Մարիոն հաճախ պետք է բարձրանար աշտարակի վրա։

Եկե՛ք փորձենք կառուցել այս աշտարակը գրելով ծրագիր C++ լեզվով։
Մեր աշտարակը կունենա տեքստային ներկայացում, որտեղ աշտարակի ամեն աղյուսը կներկայացնենք #
սիմվոլով։

Նախագծենք ծրագիրը այնպես, որ այն թույլ տա օգտագործողին ներմուծել աշտարակի բարձրությունը (այն իրենից ներկայացնում է ամբողջ տիպի դրական թիվ)։
Այսպիսով, եթե օգտագործողը ներմուծել է 4, ծրագիրը էկրանին կտպի հետևյալ պատկերը (նկատեք, որ ծրագիրը նախ էկրանին տպում է Height:
տողը, որից հետո սպասում է, որպեսզի օգտագործողը ներմուծի աշտարակի բարձրությունը)։

Եթե օգտագործողը ներմուծի 2, կունենանք այսպիսի պատկեր՝

Եթե օգտագործողը ներմուծի 1, կունենանք այսպիսի պատկեր՝

Եթե օգտագործողի ներմուծած թիվը չի պատկանում [1, 8] միջակայքին, ապա ծրագիրը պետք է նորից խնդրի օգտագործողին ներմուծել թիվ, այնքան ժամանակ, քանի դեռ օգտագործողը չի ներմուծել վալիդ ([1, 8] միջակայքին պատկանող) թիվ։
Այս օրինակում օգտագործողը ներմուծել է -1, և ծրագիրը նրան առաջարկում է նորից ներմուծել թիվ։ Հաջորդ անգամ օգտագործողը ներմուծել է 0, և ծրագիրը նրան կրկին առաջարկում է ներմուծել նոր թիվ։ Այս պրոցեսը շարունակվում է այնքան ժամանակ քանի դեռ օգտագործողը չի ներմուծել ճիշտ թիվ։

Հուշում 1
Ծրագիրը կարելի է բաժանել երկու տրամաբանական մասերի։ Նախ և առաջ պետք է գրել կոդ, որը կմշակի օգտագործողի մուտքագրած տվյալները։ Եթե օգտագործողի ներմուծած թիվը չի պատկանում [1, 8] միջակայքին, ապա ծրագիրը պետք է նորից խնդրի օգտագործողին ներմուծել թիվ այնքան ժամանակ, քանի դեռ օգտագործողը չի ներմուծել վալիդ թիվ։
🚩 Հուշում 1.1
Փորձե՛ք գրել կոդի այս հատվածը օգտագործելով do-while
ցիկլի օպերատորը՝
Տպել
Height:
տողըՍպասել օգտագործողի մուտքագրած թվին
Կրկնել 1-2 քայլերը քանի դեռ օգտագործողը չի ներմուծել [1, 8] միջակայքին պատկանող թիվ։
Հուշում 2
Աշտարակը տպելու համար անհրաժեշտ է օգտագործել ներդրված ցիկլեր։
Հուշում 3
Փորձե՛ք տպել աշտարակի ավելի պարզ (ձախից հավասարեցված) տարբերակը։

Նկատե՛ք, որ առաջին տողը պարունակում է 1 հատ #
։ Երկրորդ տողը՝ 2 հատ #
, երրորդ տողը` 3
և այդպես շարունակ։ Ընդհանուր դեպքում i
-երրորդ տողը պարունակում է i
հատ #
։
🚩Հուշում 3.1
for (int i = 1; i <= height; i++) {
// Այստեղ պետք է լինի ցիկլ, որը կտպի i հատ #
}
Հուշում 4
Այժմ փորձե՛ք հավասարացնել աշտարակը դեպի աջ։

Այս օրինակում աշտարակի բարձրությունը հավասար է 8
։ Նկատենք, որ առաջին տողը պարունակում է 7 հատ .
և 1 հատ #։
Երկրորդ տողը պարունակում է 6
հատ .
և 2
հատ #
։ Երրորդ տողը պարունակում է 5
հատ .
և 3
հատ #։
Ընդհանուր դեպքում i
-րդ տողը պարունակում է (n-i)
հատ .
և i
- հատ #,
որտեղ n
-ը աշտարակի բարձրություն է։
🚩 Հուշում 5
Աշտարակի i
-երորդ տողը պարունակում է (n-i)
հատ բացատ և i
հատ #
։
Constraints
Time limit: 0.2 seconds
Memory limit: 512 MB
Output limit: 1 MB