Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void selection() {
  5.     printf(" 1. Entering the natural number\n 2. Output the value of entered number in decimal, octal and hexadecimal form.\n 3. Output of a entered reversed natural number in decimal form.\n 4. Your natural number convertation to the number system with base n [2..16]. \n 5. Information about the version and author of the program. \n 6. Exit\n");
  6. }
  7.  
  8. int enter_number() {
  9.     int num;
  10.     printf("Entering the natural number:\n");
  11.     while (!(scanf_s("%d", &num)) || num <= 0) {
  12.         rewind(stdin);
  13.         printf("You entered wrong value.\nPlease, enter natural number.\n");
  14.     }
  15.     printf("You've entered number %d.  \n", num);
  16.     return num;
  17. }
  18.  
  19. void convert8(int number) {
  20.     if (number >= 8)
  21.     convert8(number / 8);
  22.     printf("%d", number % 8);
  23. }
  24.  
  25.  
  26. void convert16 (int number) {
  27.     int result;
  28.     if (number >= 16) {
  29.         result = number % 16;
  30.         number /= 16;
  31.         convert16(number);
  32.         printf("%c", result > 9 ? result - 10 + 'A' : result + '0');
  33.     } else {
  34.         printf("%c", number > 9 ? number - 10 + 'A' : number + '0');
  35.     }
  36. }
  37.  
  38. void reversed_number (int number) {
  39.     int result;
  40.     while (number > 0) {
  41.         result = number % 10;
  42.         printf("%d", result);
  43.         number /= 10;
  44.     }
  45. }
  46.  
  47. int radix_input() {
  48.     int radix;
  49.     printf("Enter the radix from 2 to 16: ");
  50.     while (!(scanf_s("%d", &radix)) || radix < 2 || radix > 16) {
  51.         rewind(stdin);
  52.         printf("You entered wrong value.\nPlease, enter the radix from 2 to 16.\n");
  53.     }
  54.     return radix;
  55. }
  56.  
  57. void convert_2_16(int number, int radix) {
  58.     int result;
  59.     if (number >= radix) {
  60.         result = number % radix;
  61.         number /= radix;
  62.         convert_2_16(number, radix);
  63.         printf("%c", result > 9 ? result - 10 + 'A' : result + '0');
  64.     }
  65.     else {
  66.         printf("%c", number > 9 ? number - 10 + 'A' : number + '0');
  67.     }
  68. }
  69.  
  70. void output1_dec_oct_hex(int number) {
  71.     printf("Your number was: ");
  72.     printf("%d\n", number);
  73.     printf("Your number in decimal form is: ");
  74.     printf("%d\n", number);
  75.     printf("Your number in octal form is: ");
  76.     convert8(number);
  77.     printf("\nYour number in hexadecimal form is: ");
  78.     convert16(number);
  79. }
  80.  
  81. void infotmation() {
  82.     printf("Release version 1.0\nCopyright (c) 2018 Tonya-chan\n");
  83. }
  84.  
  85. int main() {
  86.     int number = 0, radix = 0;
  87.     int switch_c;
  88.     selection();
  89.     do {
  90.         printf("\n\nEnter 0 to get selection information.\n");
  91.         printf("Enter from 0 to 6 to choose.\n");
  92.         while (!(scanf_s("%d", &switch_c)) || switch_c < 0 || switch_c > 6) {
  93.             rewind(stdin);
  94.             printf("You entered wrong value.\nPlease, enter from 0 to 6.\n");
  95.         }
  96.         switch (switch_c) {
  97.         case 0:
  98.             system("CLS");
  99.             selection();
  100.                 break;
  101.         case 1:
  102.             system("CLS");
  103.             number = enter_number();
  104.                 break;
  105.         case 2:
  106.             system("CLS");
  107.             output1_dec_oct_hex(number);
  108.                 break;
  109.         case 3:
  110.             system("CLS");
  111.             reversed_number(number);
  112.                 break;
  113.         case 4:
  114.             system("CLS");
  115.             radix = radix_input();
  116.             convert_2_16(number, radix);
  117.                 break;
  118.         case 5:
  119.             system("CLS");
  120.             infotmation();
  121.                 break;
  122.         case 6:
  123.             system("CLS");
  124.             printf("Bye!\n");
  125.             system("exit");
  126.         }
  127.  
  128.     } while (switch_c != 6);
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement