Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. struct compl
  7. {
  8.     int x;
  9.     int y;
  10. };
  11.  
  12. void text_menu()
  13. {
  14.     printf("Write '0' to exit\n");
  15.     printf("Write '1' to input new complex number\n");
  16.     printf("Write '2' to write complex number in algebraic form\n");
  17.     printf("Write '3' to write complex number in exponential form\n");
  18.     printf("Write '4' to write conjugate complex number\n");
  19.     printf("Write '5' to power the number\n");
  20.     printf("Write '6' to write information about an authorn\n");
  21.     printf("Write '7' to write complex number in exponential form\n");
  22. }
  23. void check_menu_char(int *menu_pointer)
  24. {
  25.     char char_point[3];
  26.     if ((char_point[0] = getchar()) != '\n') {
  27.         if ((char_point[1] = getchar()) != '\n') {
  28.             while (char_point[2] != '\n') {
  29.                 char_point[2] = getchar();
  30.                 *menu_pointer = -1;
  31.             }
  32.         }
  33.         else {
  34.             if (char_point[0] <= '5' && char_point[0] >= '0') {
  35.                 *menu_pointer = atoi(&char_point[0]);
  36.             }
  37.             else {
  38.                 *menu_pointer = -1;
  39.             }
  40.         }
  41.  
  42.     }
  43.     else {
  44.         *menu_pointer = -1;
  45.     }
  46. }
  47.  
  48. void write_compl_number(struct compl *compl_pointer) {
  49.     if (0 > compl_pointer->y) {
  50.         printf("%d%d*i\n", compl_pointer->x, compl_pointer->y);
  51.     }
  52.     else if (0 < compl_pointer->y){
  53.         printf("%d+%d*i\n", compl_pointer->x, compl_pointer->y);
  54.     }
  55.     else {
  56.         printf("%d\n", compl_pointer->x);
  57.  
  58.     }
  59. }
  60.  
  61. void scan_compl_part (int *z, int *menu_pointer) {
  62.     char input_char;
  63.     int check_negative = 0;
  64.  
  65.     printf("Form of input of number is 'a+b*i'\n");
  66.     printf("Please, input the natural number\n");
  67.  
  68.     input_char = getchar();
  69.  
  70.     if (input_char == '-') {
  71.         check_negative = 1;
  72.     }
  73.     else if (input_char == '\n') {
  74.         z = 0;
  75.     }
  76.     else {
  77.         while (input_char != '\n') {
  78.             if (check_negative == 1) {
  79.                 input_char = getchar();
  80.             }
  81.             if (input_char < '0' || input_char > '9') {
  82.                 *menu_pointer = -1;
  83.                 z = 0;
  84.                 break;
  85.             }
  86.             else {
  87.                 if (input_char != 'n') {
  88.                     z = z * 10 + atoi(&input_char);
  89.                     input_char = getchar();
  90.                 }
  91.             }
  92.         }
  93.     }
  94.     if (check_negative == 1) {
  95.         z = -z;
  96.     }
  97. }
  98.  
  99.  
  100. void write_conj_number(struct compl *compl_pointer) {
  101.     int x;
  102.     int y;
  103.  
  104.     x = compl_pointer->x;
  105.     y = compl_pointer->y;
  106.  
  107.     if (y < 0) {
  108.         printf("%d%d*i\n", x, y);
  109.     }
  110.     else if (y == 0) {
  111.         printf("It is not a complex number. Please, try to input complex number again\n");
  112.     }
  113.     else {
  114.         printf("%d+%d*i\n", x, y);
  115.     }
  116. }
  117.  
  118. void compl_power(struct compl *compl_pointer) {
  119.     int x;
  120.     int y;
  121.     int power;
  122.  
  123.     x = compl_pointer->x;
  124.     y = compl_pointer->y;
  125.  
  126.     printf("Please< input the power of a number\n");
  127.     scanf("%d\n", &power);
  128.  
  129.     for (int i = 0; i < power; i++) {
  130.         x = x * x - y * y;
  131.         y = x * y + x * y;
  132.     }
  133.  
  134.     printf("The powered number:  ");
  135.     printf ("%d+%d*i\n", x, y);
  136. }
  137.  
  138. int main() {
  139.     struct compl compl_num;
  140.     int menu_pointer;
  141.  
  142.     compl_num.x = 0;
  143.     compl_num.y = 0;
  144.  
  145.     text_menu();
  146.  
  147.  
  148.     do {
  149.         printf("Input the number please ");
  150.  
  151.         check_menu_char(&menu_pointer);
  152.  
  153.         switch (menu_pointer) {
  154.         case 1:
  155.             scan_compl_part(&compl_num.x, &menu_pointer);
  156.             scan_compl_part(&compl_num.y, &menu_pointer);
  157.             break;
  158.         case 2:
  159.             write_compl_number(&compl_num);
  160.             break;
  161.         case 3:
  162.             // write_exp_form(&compl_num);
  163.             break;
  164.         case 4:
  165.             write_conj_number(&compl_num);
  166.             break;
  167.         case 5:
  168.             compl_power(&compl_num);
  169.             break;
  170.         default:
  171.             printf("Please, try again\n");
  172.             break;
  173.         }
  174.     }while (menu_pointer != 0);
  175.  
  176.     return 0;
  177.  
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement