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