Տրված է n բնական թիվը, որը 2-ի որևէ աստիճան է հանդիսանում :
Հաշվել և արտածել k-ի արժեքը:

Խնդիր սա է:

Խնդրում եմ եթե դժվար չի քայլ ռա քայլ բացատրեք էլի, որ ես հասկանամ, հետո էլ աշակերտներիս հասկացնեմ




Մեջբերում armen9494-ի խոսքերից Նայել գրառումը
Ճիշտն ասած ձեր գրածի ալգորիթմը չհասկացա, նամանավանդ էն պահը, որ n-ը ներմուծելուց հետո նրան 2 եք վերագրում
Քանի որ ասեցիք, որ սովորելու նպատակով եք այս խնդիրները ուսումնասիրում, ասեմ մի քանի բան, որ ձեր խնդրի մեջ սխալ են (ալգորիթմը մի կողմ դրած):
Նախ քանի որ դուք օգտագործում եք pow-ը, պետք է ծրագրին կցված լինի math.h-ը՝
#include <math.h>
k թիվը պետք չէ double տիպի հայտարարել, քանի որ այն միայն ամբողջ արժեքներ կարող է ընդունել:
k+=1-ի փոխարեն ավելի ճիշտ է գրել k++ կամ ++k

Այս պահը սխալ չէ, բայց ճիշտ կանեք հակառակը գրել (ինքս էլ եմ հաճախ էս ձևով գրում ու ուզում եմ իմ մեջ փոխել սա)
while (n==(pow(2,k)))
while ((pow(2,k))==n)
որովհետև հաճախ սխալվում ենք ու ==-ի փոխարեն դնում ենք =
while (n=(pow(2,k))) էս դեպքում ծրագիրը error չի տա, ու սխալ արդյունք կստանանք, իսկ մյուս դեպքում սխալ կտա, քանի որ pow(2,k)-ին չի կարող վերագրել n-ի արժեքը:


Մի հարց՝ մեզ տրված թիվը հաստատ 2-ի աստիճան է, թե կարող է ուրիշ թիվ էլ լինել: Լավ, հիմա կգրեմ էն տարբերակը, երբ հաստատ 2-ի աստիճան է, եթե մյուսը լինի, ասեք, մյուս տարբերակի համար էլ կսարքեմ այնպես, որ ուրիշ թիվ ներմուծելու դեպքում ասի կրկին ներմուծեք:

Կառաջարկեմ այս եղանակը. բացում ենք նախապայմանով ցիկլ, ցիկլի մեջ n-ը բաժանում ենք երկուսի և k-ն մեկով ավելացնում ենք: Ցիկլի պայմանը n!=1-ն է: Այսինքն թիվը այնքան ենք բաժանում 2-ի վրա, մինչև դառնա մեկ:



___