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