Programming 01

🟡 Մարիոյի աշտարակ

Դե ինչ, փոքրիկ վարժությունները հաջողությամբ լուծելուց հետո այժմ ժամանակն է գրել լիակատար ծրագիր։ Երևի թե բոլորդ էլ կհիշեք, Նիթենդո ընկերության հայտնի «Մարիո» խաղը։ Այդ խաղում Մարիոն հաճախ պետք է բարձրանար աշտարակի վրա։
notion image
Եկե՛ք փորձենք կառուցել այս աշտարակը գրելով ծրագիր C++ լեզվով։ Մեր աշտարակը կունենա տեքստային ներկայացում, որտեղ աշտարակի ամեն աղյուսը կներկայացնենք # սիմվոլով։
 
notion image
 
Նախագծենք ծրագիրը այնպես, որ այն թույլ տա օգտագործողին ներմուծել աշտարակի բարձրությունը (այն իրենից ներկայացնում է ամբողջ տիպի դրական թիվ)։ Այսպիսով, եթե օգտագործողը ներմուծել է 4, ծրագիրը էկրանին կտպի հետևյալ պատկերը (նկատեք, որ ծրագիրը նախ էկրանին տպում է Height: տողը, որից հետո սպասում է, որպեսզի օգտագործողը ներմուծի աշտարակի բարձրությունը)։
notion image
 
Եթե օգտագործողը ներմուծի 2, կունենանք այսպիսի պատկեր՝
notion image
 
Եթե օգտագործողը ներմուծի 1, կունենանք այսպիսի պատկեր՝
notion image
 
Ինչպես արդեն նշել էինք նախորդ դասերի ընթացքում, ցանկացած ծրագիր գրելիս անհրաժեշտ է սահմանափակել և մշակել օգտագործողի կողմից ներմուծված տվյալները։ Այս խնդրի շրջանակում, եկեք սահամանափակենք աշտարակի բարձրությունը 8 -ով (ներառյալ)։
Եթե օգտագործողի ներմուծած թիվը չի պատկանում [1, 8] միջակայքին, ապա ծրագիրը պետք է նորից խնդրի օգտագործողին ներմուծել թիվ, այնքան ժամանակ, քանի դեռ օգտագործողը չի ներմուծել վալիդ ([1, 8] միջակայքին պատկանող) թիվ։
Այս օրինակում օգտագործողը ներմուծել է -1, և ծրագիրը նրան առաջարկում է նորից ներմուծել թիվ։ Հաջորդ անգամ օգտագործողը ներմուծել է 0, և ծրագիրը նրան կրկին առաջարկում է ներմուծել նոր թիվ։ Այս պրոցեսը շարունակվում է այնքան ժամանակ քանի դեռ օգտագործողը չի ներմուծել ճիշտ թիվ։
 
notion image
 

Հուշում 1

Ծրագիրը կարելի է բաժանել երկու տրամաբանական մասերի։ Նախ և առաջ պետք է գրել կոդ, որը կմշակի օգտագործողի մուտքագրած տվյալները։ Եթե օգտագործողի ներմուծած թիվը չի պատկանում [1, 8] միջակայքին, ապա ծրագիրը պետք է նորից խնդրի օգտագործողին ներմուծել թիվ այնքան ժամանակ, քանի դեռ օգտագործողը չի ներմուծել վալիդ թիվ։

🚩 Հուշում 1.1

Փորձե՛ք գրել կոդի այս հատվածը օգտագործելով do-while ցիկլի օպերատորը՝
  1. Տպել Height: տողը
  1. Սպասել օգտագործողի մուտքագրած թվին
  1. Կրկնել 1-2 քայլերը քանի դեռ օգտագործողը չի ներմուծել [1, 8] միջակայքին պատկանող թիվ։

Հուշում 2

Աշտարակը տպելու համար անհրաժեշտ է օգտագործել ներդրված ցիկլեր։

Հուշում 3

Փորձե՛ք տպել աշտարակի ավելի պարզ (ձախից հավասարեցված) տարբերակը։
notion image
Նկատե՛ք, որ առաջին տողը պարունակում է 1 հատ #։ Երկրորդ տողը՝ 2 հատ #, երրորդ տողը` 3 և այդպես շարունակ։ Ընդհանուր դեպքում i-երրորդ տողը պարունակում է i հատ #։

🚩Հուշում 3.1

for (int i = 1; i <= height; i++) {
   // Այստեղ պետք է լինի ցիկլ, որը կտպի i հատ #
}

Հուշում 4

Այժմ փորձե՛ք հավասարացնել աշտարակը դեպի աջ։
notion image
Այս օրինակում աշտարակի բարձրությունը հավասար է 8։ Նկատենք, որ առաջին տողը պարունակում է 7 հատ . և 1 հատ Երկրորդ տողը պարունակում է 6 հատ . և 2 հատ #։ Երրորդ տողը պարունակում է 5 հատ . և 3 հատ Ընդհանուր դեպքում i-րդ տողը պարունակում է (n-i) հատ . և i- հատ #, որտեղ n-ը աշտարակի բարձրություն է։

🚩 Հուշում 5

Աշտարակի i-երորդ տողը պարունակում է (n-i) հատ բացատ և i հատ #։
 
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue