#include <stdio.h>
#include <stdlib.h>
void vPow(void); /* ?????????? ????? x ? ??????? n (void)*/
void NumOfDigits(void); /* ?????????? ???? ? ?????? ????? */
void Task1(void); /* ???????????? '1' ? '0' ? ?????? ????? */
void Task2(void); /* ???????????? '1' ? ???????? ?????? ????? */
int main()
{
vPow();
NumOfDigits();
Task1();
Task2();
return 0;
}
void vPow(void)
{
int n, k;
double x, p = 1;
printf("Function x^n \nInput x, n: ");
scanf("%lf%*c%d", &x, &n); // %lf - ???????????? double (l = long)
if(n < 0) // %*c - ????????? ??????, ?? ????????? ??? ????????????
k = -n;
else
k = n;
for(; k > 0; --k)
p = p * x;
if(n < 0)
p = 1 / p;
printf("Result: %.2lf\n\n", p
);
}
void NumOfDigits(void)
{
int a, n = 0;
printf("Function counting digits in a number \nInput number: ");
scanf("%d", &a);
do {
a /= 10;
++n;
}
while(a != 0);
}
void Task1(void)
{
int a, n = 0;
printf("Function counting '0' and '1' in a number \nInput number: ");
scanf("%d", &a);
do {
if ((a%10 == 1 )|| (a%10 == 0))
{
a /= 10;
++n;
}
else a /= 10;
}
while(a != 0);
}
int Pow(int x, int n) // ??????? ???????? ????? x ? ??????? n
{
int k, p = 1;
if(n < 0)
k = -n;
else
k = n;
for(; k > 0; --k)
p = p * x;
if(n < 0)
p = 1 / p;
return p;
}
int ttod(int x) // ??????? ????????? ????? ?? ?????????? ??????? ? ????????
{
int i, a=1, n=1;
if (x>1023) // ???? x >= 1024, ?? ??? ???????? ?????? ????? ??????????????????
return 0; // ? ???????????? ???????? ?????????? integer - ????????????? ?????
do {
a = Pow(2, n);
n++;
}
while (a<x);
a=0;
i=n;
do {
a+=(x%2)*Pow(10, n-i);
x /= 2;
i--;
}
while (i>0);
return a;
}
void Task2(void)
{
int x, y, n=0;
printf("Function counting '1' in binary notation of number \nInput number: ");
scanf("%d", &x);
y=ttod(x);
x=y;
do {
if (x%10 == 1 )
{
x /= 10;
++n;
}
else x /= 10;
}
while(x != 0);
printf("Binary notation: %d\nNumber of '1': %d\n\n", y
, n
);
}