Author: Pavel Kravtsov Language: c
Description: Numbers Timestamp: 2013-05-11 16:18:26 +0000
View raw paste Reply
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void vPow(void); /* ?????????? ????? x ? ??????? n (void)*/
  5. void NumOfDigits(void); /* ?????????? ???? ? ?????? ????? */
  6. void Task1(void); /* ???????????? '1' ? '0' ? ?????? ????? */
  7. void Task2(void); /* ???????????? '1' ? ???????? ?????? ????? */
  8.  
  9. int main()
  10. {
  11.     vPow();
  12.     NumOfDigits();
  13.     Task1();
  14.     Task2();
  15.     return 0;
  16. }
  17.  
  18. void vPow(void)
  19. {
  20. int n, k;
  21. double x, p = 1;
  22.     printf("Function x^n \nInput x, n: ");
  23.     scanf("%lf%*c%d", &x, &n); // %lf - ???????????? double (l = long)
  24.     if(n < 0)                  // %*c - ????????? ??????, ?? ????????? ??? ????????????
  25.         k = -n;
  26.     else
  27.         k = n;
  28.     for(; k > 0; --k)
  29.         p = p * x;
  30.     if(n < 0)
  31.         p = 1 / p;
  32.     printf("Result: %.2lf\n\n", p);
  33. }
  34.  
  35. void NumOfDigits(void)
  36. {
  37. int a, n = 0;
  38.     printf("Function counting digits in a number \nInput number: ");
  39.     scanf("%d", &a);
  40.     do  {
  41.         a /= 10;
  42.         ++n;
  43.         }
  44.     while(a != 0);
  45.     printf("Result: %d\n\n", n);
  46. }
  47.  
  48. void Task1(void)
  49. {
  50. int a, n = 0;
  51.     printf("Function counting '0' and '1' in a number \nInput number: ");
  52.     scanf("%d", &a);
  53.      do  {
  54.         if ((a%10 == 1 )|| (a%10 == 0))
  55.             {
  56.             a /= 10;
  57.             ++n;
  58.             }
  59.         else a /= 10;
  60.         }
  61.     while(a != 0);
  62.     printf("Result: %d\n\n", n);
  63. }
  64.  
  65. int Pow(int x, int n)    // ??????? ???????? ????? x ? ??????? n
  66. {
  67. int k, p = 1;
  68.     if(n < 0)
  69.         k = -n;
  70.     else
  71.         k = n;
  72.     for(; k > 0; --k)
  73.         p = p * x;
  74.     if(n < 0)
  75.         p = 1 / p;
  76. return p;
  77. }
  78.  
  79. int ttod(int x)         // ??????? ????????? ????? ?? ?????????? ??????? ? ????????
  80. {
  81. int i, a=1, n=1;
  82.     if (x>1023)         // ???? x >= 1024, ?? ??? ???????? ?????? ????? ??????????????????
  83.         return 0;       // ? ???????????? ???????? ?????????? integer - ????????????? ?????
  84.     do  {
  85.         a = Pow(2, n);
  86.         n++;
  87.         }
  88.     while (a<x);
  89.     a=0;
  90.     i=n;
  91.     do  {
  92.         a+=(x%2)*Pow(10, n-i);
  93.         x /= 2;
  94.         i--;
  95.         }
  96.     while (i>0);
  97. return a;
  98. }
  99.  
  100. void Task2(void)
  101. {
  102. int x, y, n=0;
  103.     printf("Function counting '1' in binary notation of number \nInput number: ");
  104.     scanf("%d", &x);
  105.     y=ttod(x);
  106.     x=y;
  107.     do  {
  108.         if (x%10 == 1 )
  109.             {
  110.             x /= 10;
  111.             ++n;
  112.             }
  113.         else x /= 10;
  114.         }
  115.     while(x != 0);
  116.     printf("Binary notation: %d\nNumber of '1': %d\n\n", y, n);
  117. }
View raw paste Reply