Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct compl
- {
- int x;
- int y;
- };
- void text_menu()
- {
- printf("Write '0' to exit\n");
- printf("Write '1' to input new complex number\n");
- printf("Write '2' to write complex number in algebraic form\n");
- printf("Write '3' to write complex number in exponential form\n");
- printf("Write '4' to write conjugate complex number\n");
- printf("Write '5' to power the number\n");
- printf("Write '6' to write information about an authorn\n");
- printf("Write '7' to write complex number in exponential form\n");
- }
- void check_menu_char(int *menu_pointer)
- {
- char char_point[3];
- if ((char_point[0] = getchar()) != '\n') {
- if ((char_point[1] = getchar()) != '\n') {
- while (char_point[2] != '\n') {
- char_point[2] = getchar();
- *menu_pointer = -1;
- }
- }
- else {
- if (char_point[0] <= '5' && char_point[0] >= '0') {
- *menu_pointer = atoi(&char_point[0]);
- }
- else {
- *menu_pointer = -1;
- }
- }
- }
- else {
- *menu_pointer = -1;
- }
- }
- void write_compl_number(struct compl *compl_pointer) {
- if (0 > compl_pointer->y) {
- printf("%d%d*i\n", compl_pointer->x, compl_pointer->y);
- }
- else if (0 < compl_pointer->y){
- printf("%d+%d*i\n", compl_pointer->x, compl_pointer->y);
- }
- else {
- printf("%d\n", compl_pointer->x);
- }
- }
- void scan_compl_part (int *z, int *menu_pointer) {
- char input_char;
- int check_negative = 0;
- printf("Form of input of number is 'a+b*i'\n");
- printf("Please, input the natural number\n");
- input_char = getchar();
- if (input_char == '-') {
- check_negative = 1;
- }
- else if (input_char == '\n') {
- z = 0;
- }
- else {
- while (input_char != '\n') {
- if (check_negative == 1) {
- input_char = getchar();
- }
- if (input_char < '0' || input_char > '9') {
- *menu_pointer = -1;
- z = 0;
- break;
- }
- else {
- if (input_char != 'n') {
- z = z * 10 + atoi(&input_char);
- input_char = getchar();
- }
- }
- }
- }
- if (check_negative == 1) {
- z = -z;
- }
- }
- void write_conj_number(struct compl *compl_pointer) {
- int x;
- int y;
- x = compl_pointer->x;
- y = compl_pointer->y;
- if (y < 0) {
- printf("%d%d*i\n", x, y);
- }
- else if (y == 0) {
- printf("It is not a complex number. Please, try to input complex number again\n");
- }
- else {
- printf("%d+%d*i\n", x, y);
- }
- }
- void compl_power(struct compl *compl_pointer) {
- int x;
- int y;
- int power;
- x = compl_pointer->x;
- y = compl_pointer->y;
- printf("Please< input the power of a number\n");
- scanf("%d\n", &power);
- for (int i = 0; i < power; i++) {
- x = x * x - y * y;
- y = x * y + x * y;
- }
- printf("The powered number: ");
- printf ("%d+%d*i\n", x, y);
- }
- int main() {
- struct compl compl_num;
- int menu_pointer;
- compl_num.x = 0;
- compl_num.y = 0;
- text_menu();
- do {
- printf("Input the number please ");
- check_menu_char(&menu_pointer);
- switch (menu_pointer) {
- case 1:
- scan_compl_part(&compl_num.x, &menu_pointer);
- scan_compl_part(&compl_num.y, &menu_pointer);
- break;
- case 2:
- write_compl_number(&compl_num);
- break;
- case 3:
- // write_exp_form(&compl_num);
- break;
- case 4:
- write_conj_number(&compl_num);
- break;
- case 5:
- compl_power(&compl_num);
- break;
- default:
- printf("Please, try again\n");
- break;
- }
- }while (menu_pointer != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement