🟢 Ընթեռնելիություն

Դպրոցական ծրագրեր կազմելիս, շատ կարևոր է, որպեսզի ամեն դասարանի համար նախատեսված գրքերը լինեն հասկանալի այդ տարիքի երեխաների համար։ Գրքի «ընթեռնելիության» գնահատական շատ ժամանակ տալիս են մասնագետները։ Ընթեռնելիությունը գնահատելիս հաշվի են առնվում է մի քանի բնորոշիչ հատկություններ։ Օրինակ, եթե գրքում օգտագործվում են երկար բառեր, ապա հավանական է, որ այդ գիրքը ավելի դժվար ընթեռնելի կլինի։ Դուրս հանելով գրքի տարբեր բնորոշիչ հատկություններ, հնարավոր է մշակել ալգորիթմ, որը ավտոմատ կհաշվի և կգնահատի գրքի «ընթեռնելիությունը»։
Տարիների ընթացքում մշակվել են գրքերի «ընթեռնելիության» գնահատման բազմաթիվ ալգորիթմներ։ Այս խնդրում մենք կփորձենք իրականացնել «Coleman-Liau index» ալգորիթմը, որը լայնորեն կիրառվում է ԱՄՆ կրթական համակարգում։ Այս ալգորիթմը հաշվում է թե որ դասարանի համար է նախատեսված տրված գիրքը (նախատեսված է ԱՄՆ կրթական համակարգի համար)։
Գրքի ընթեռնելիության ինդեքսը հաշվում է հետևյալ բանաձևով՝
index = 0.0588 * L - 0.296 * S - 15.8
որտեղ, L - ը տեքստի ամեն 100 բառի համար տառերի միջին քանակն է, իսկ S - ը ամեն 100 բառի համար նախադասությունների միջին քանակն է։
Դիտարկենք, օրինակ, "Congratulations! Today is your day. You're off to Great Places! You're off and away!" տողը։ Այս տողը ունի 65 տառ, 4 նախադասություն և 14 բառ։ Տեքստի ամեն 100 բառի հաշվով տառերի միջին քանակը կլինի՝
 L = 65 / 14 * 100 = 464.29։ 
Իսկ ամեն 100 բառի հաշվով նախադասությունների միջին քանակը կլինի՝
 S = 4 / 14 * 100 = 28.57։ 
Տեղադրելով ստացված թվերը բանաձևի մեջ և կլորացնելով արդյունքը, կստանանք, որ տեքստի այս հատվածը նախատեսված է երրորդ դասարանի ընթեռցանության համար՝
0.0588 * 464.29 - 0.296 * 28.57 - 15.8 = 3.04 =~ 3։
Դիտարկենք ևս մեկ օրինակ՝
“Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard.” Այս պարբերությունը պարունակում է 214 տառ, 4 նախադասություն, և 56 բառ։ Ամեն 100 բառի հաշվով տառերի միջին քանակը հավասար է 382.14, իսկ նախադասությունների միջին քանակը կլինի 7.14։
Տեղադրելով այս թվերը բանաձևի մեջ կստանանք, որ այս պարբերությունը նախատեսված է 5 -րդ դասարանի ընթեռցանության համար։
0.0588 * 382.14 - 0.296 * 7.14 - 15.8 = 4.55 =~ 5։
 
Դե ինչ, եկեք նախագծենք և իրականացնենք ծրագիր, որը՝
  1. Օգտագործողից պահանջում է ներմուծել մուտքային տեքստ։ Ծրագրի օգտագործումը պարզ դարձնելու համար, տեքստի մուտքագրումից հետո անհրաժեշտ է այն տպել էկրանին հետևյալ կերպ Text: input text goes here։
  1. Հաշվում է այդ տեքստի ընթեռնելիության ինդեքսը՝ օգտագործելով Coleman-Liau-ի ալգորիթմը։
    1. Տառերի քանակը հաշվելիս, հաշվի առեք, որ անհրաժեշտ է հաշվել միայն անգլերեն այբուբենի տառերի (մեծատառ և փոքրատառ) քանակը, իսկ հատուկ սիմվոլները և թվերը հարկավոր է անտեսել։
    2. Նախադասությունների քանակը հաշվելու համար, կարող եք օգտվել այն փաստից, որ դրանք միշտ ավարտվում են ., ! կամ ? սիմվոլներով։ Իհարկե, իրական կյանքում կարող են հանդիպել տողեր, որտեղ . սիմվոլը հանդիպում է նախադասության ներսում (օրինակ՝ “Mr. and Mrs. Dursley have been married for almost 10 years”), սակայն խնդրի պարզության համար այսպիսի դեպքերը կարելի է անտեսել։
  1. Էկրանին տպում է Grade X տողը, որտեղ X - ը մուտքագրված տեքստին համապատասխան դասարանի համարն է։
    1. Քանի որ ծրագիրը պետք է էկրանին տպի համապատասխան դասարանի համարը, հաշվարկված ինդեքսը (սահող կետով թիվ) անհրաժեշտ է կլորացնել դեպի մոտակա ամբողջ թիվը։
    2. Եթե ստացված արդյունքը փոքր է 1-ից, էկրանին տպել “Before Grade 1” տողը։
    3. Եթե ստացված արդյունքը մեծ կամ հավասար է 16, կոնկրետ թիվը տպելու փոխարեն, էկրանին տպել Grade 16+ տողը։
 
notion image
 

Ծրագրավորման ոճ

Խնդիրը գրելուց առաջ, ևս մեկ անգամ կարդացեք “Ծրագրավորման ոճ” դասը։ Մի՛ գրեք ամբողջ ծրագիրը մեկ main ֆունկցիայի մեջ։ Մտածեք, թե ի՞նչ տրամաբանական հատվածների (ֆունկցիաների) է կարելի բաժանել ծրագիրը, որպեսզի կոդը լինի հնարավորինս ընթեռնելի։ Ֆունկցիաներ գրելիս, փորձեք պահպանել «եզակի պատասխանատվության» (single responsobility) սկզբունքը։ Օգտագործե՛ք մտածված և իմաստային անուններ և՛ փոփոխականների և՛ ֆունկցիաների համար։

Հուշում 1

cmath գրադարանը պարունակում է round անունով ֆունկցիա, որը թույլ է տալիս կլորացնել սահող կետով թվերը։
 

Constraints

Time limit: 0.2 seconds

Memory limit: 512 MB

Output limit: 1 MB

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