Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
#1

Структур комплексных чисел - C++

09.09.2010, 09:18. Просмотров 2429. Ответов 37
Метки нет (Все метки)

Задание: Организовать структуру комплексных чисел и для неё реализовать операции: +, -, *, /, и нахождение сопряженного числа. Результат вывести на экран. Для демонстрации работы функции сделать меню с возможностью выбора. (это я думаю про знаки операции)

вот что у меня выходит по тексту, проблема в том что, сначала компилируется все норм, и даж выводит первый запрос, потом все глючит, выдается ошибка по переменным - a, f, k - вот что с ними можно сделать я и не могу понять, объясните пж.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "stdafx.h" 
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
using namespace std;
 
struct KOMPLEX
        {
            float Re;
            float Im;   
        };
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
KOMPLEX a, f, k;
char w;
    printf ("Введите действительную чать 1ого числа \n");
    scanf_s("%f", a.Re);         
    printf ("Введите мнимую чать 1ого числа \n");
    scanf_s("%f", a.Im);    
 
    printf ("Введите действительную чать 2ого числа \n");
    scanf_s("%f", f.Re);        
    printf ("Введите мнимую чать 2ого числа \n");
    scanf_s("%f", f.Im);
 
    printf ("Введите знак действи который хотите совершить -, +, *, /  или  s -  что будет означать что вам необходимо найти сопряженное  для 1ого комплексного числа \n");
    scanf_s ("%s", w);
 
    switch (w)
    {
    case '-': k.Re = a.Re - f.Re;
              k.Im = a.Im - f.Im;
              break;
    case '+': k.Re = a.Re + f.Re;
              k.Im = a.Im + f.Im; 
              break;
    case '*': k.Re = a.Re * f.Re - a.Im * f.Im;
              k.Im = a.Re * f.Im + a.Im * f.Re; 
              break;
    case '/': k.Re = (a.Re * f.Re + a.Im * f.Im)/(f.Re * f.Re + f.Im * f.Im);
              k.Im = (a.Im * f.Re - a.Re * f.Im)/(f.Re * f.Re + f.Im * f.Im); 
              break;
    case 's': k.Re = a.Re;
              k.Im = -a.Im; 
              break;
    };
 
printf (" Ответ");
scanf_s ("%f", k.Re+k.Im);
 
 
_getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2010, 09:18     Структур комплексных чисел
Посмотрите здесь:

Классы комплексных чисел - C++
здравствуйте, мне надо сделать калькулятор комплексных чисел. Я пытался но как то не получается. С++ я плохо знаю потому что sql изучал....

Калькулятор комплексных чисел - C++
помогите пожалуйста с курсовиком по информатике...

Класс комплексных чисел - C++
Сейчас начал изучение классов. Придумал себе задачку: написать класс комплексных чисел. Пока планирую так: PRIVATE: - переменные: ...

Структура комплексных чисел - C++
Задание такое: создать структуру комплексных чисел для записи комплексных чисел. Реализовать арифметические операции с комплексными...

Умножение комплексных чисел - C++
у меня имеется прога, по решению данной задачи, с помощью структуры struct complex { int re; int img; } a, b; ...

Класс комплексных чисел - C++
Нужно создать программу (два класса) Класс комплексных чисел Базовый класс (мнимых чисел): Конструкторы: по умолчавнию, с параметрами...

Деление комплексных чисел - C++
Запуталась с делением комплексных чисел. Помогите пожалуйста. struct complex { double a; double b; }A,B,C; void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 16:39     Структур комплексных чисел #21
Цитата Сообщение от silent_1991 Посмотреть сообщение
я просто всегда double использую, поэтому по привычке lf написал
Я Вас удивлю, но и для вывода double модификатор l не нужен. При выводе long double используется %Lf.
Цитата Сообщение от silent_1991 Посмотреть сообщение
Для проверки попробуйте убрать %*c
Тогда вместо знака будет '\n' в переменную попадать. Можно вот так например сделать:
C
1
2
fflush(stdin);
scanf("%c", &w);
проверял - тоже работает. Но по-моему беда не в этом. Скопируйте из редактора весь текст и сюда выложите...
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
09.09.2010, 16:43     Структур комплексных чисел #22
easybudda,
Я Вас удивлю, но и для вывода double модификатор l не нужен
Хм... меня как научили на первом курсе писать lf, всегда этому следовал... И теперь, боюсь, уже не переучусь...

На счёт %*c, как выяснилось, именно это место компилятору и не понравилось...
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 17:03     Структур комплексных чисел #23
White Luna, да, кстати... Если используете русскую локаль, отделяйте в числах дробную часть запятой, а не точкой!

Добавлено через 10 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
меня как научили на первом курсе писать lf, всегда этому следовал...
Modifier a, A, e, E, f, F, g, G
l (ell) double (ignored, same behavior as without it)
L long double
man 3 printf
Цитата Сообщение от silent_1991 Посмотреть сообщение
На счёт %*c, как выяснилось, именно это место компилятору и не понравилось...
CONVERSIONS
Following the % character introducing a conversion there may be a number
of flag characters, as follows:

* Suppresses assignment. The conversion that follows occurs as
usual, but no pointer is used; the result of the conversion is
simply discarded.
man 3 scanf
у меня "%*c" прекрасно отработало, да и довольно давно так делаю - без проблем...

Добавлено через 9 минут
Цитата Сообщение от White Luna Посмотреть сообщение
"%s" прога прошла дальше терь ему не нравиться как у ми ответ выводится, пишет слово ответ иглохнет
Правильно - у Вас w объявлена как переменная типа char, а Вы туда строку запихнуть пытаетесь. То есть в ячейку памяти, находящуюся после w пишется '\0', вот отсюда и проблема. Попробуйте fflush() использовать (выше показал, как).
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
09.09.2010, 17:07     Структур комплексных чисел #24
easybudda,
Мне тоже так кажется, у меня в RAD studio всё работает...
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.09.2010, 17:33  [ТС]     Структур комплексных чисел #25
Вот полный текст проги, вот тока после строчк вывода выходит окно Run-Time Check Failure #3 - The variable 'k' is deing used without deing initialized.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
#include "tchar.h"
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
using namespace std;
 
struct KOMPLEX
        {
            float Re;
            float Im;   
        };
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
KOMPLEX a, f, k;
char w;
    printf ("Введите действительную чать 1ого числа \n");
    scanf_s("%f", &a.Re);        
    printf ("Введите мнимую чать 1ого числа \n");
    scanf_s("%f", &a.Im);   
 
    printf ("Введите действительную чать 2ого числа \n");
    scanf_s("%f", &f.Re);       
    printf ("Введите мнимую чать 2ого числа \n");
    scanf_s("%f", &f.Im);
 
    fflush(stdin);
    printf ("Введите знак действи который хотите совершить -, +, *, /  или  s -  что будет означать что вам необходимо найти сопряженное  для 1ого комплексного числа \n");
    scanf_s ("%c", &w);  // конструкция %*c, "проглатывает" символ '\n', который в потоке после предыдущего ввода остался,
                            // %с - считывает 1 символ и помещает его в переменную w;
 
    switch (w)
    {
    case '-': k.Re = a.Re - f.Re;
              k.Im = a.Im - f.Im;
              break;
    case '+': k.Re = a.Re + f.Re;
              k.Im = a.Im + f.Im; 
              break;
    case '*': k.Re = a.Re * f.Re - a.Im * f.Im;
              k.Im = a.Re * f.Im + a.Im * f.Re; 
              break;
    case '/': k.Re = (a.Re * f.Re + a.Im * f.Im)/(f.Re * f.Re + f.Im * f.Im);
              k.Im = (a.Im * f.Re - a.Re * f.Im)/(f.Re * f.Re + f.Im * f.Im); 
              break;
    case 's': k.Re = a.Re;
              k.Im = -a.Im; 
              break;
    };
 
printf (" Ответ");
 
 scanf_s ("%f + %f \n", k.Re, k.Im);
 
 
_getch();
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от easybudda Посмотреть сообщение
White Luna Попробуйте fflush() использовать (выше показал, как).
попробовала тоже самое

Добавлено через 15 минут
easybudda, мож выложить свой вариант проги еще раз, а то не понимаю почему у меня не считает, точнее не выводит результат
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 17:38     Структур комплексных чисел #26
Цитата Сообщение от White Luna Посмотреть сообщение
scanf_s ("%f + %f \n", k.Re, k.Im);
это... тут же ответ выводиться должен...
C++
1
printf("%f + %f \n", k.Re, k.Im);
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.09.2010, 17:41  [ТС]     Структур комплексных чисел #27
Цитата Сообщение от easybudda Посмотреть сообщение
это... тут же ответ выводиться должен...
C++
1
printf("%f + %f \n", k.Re, k.Im);
это то верно но у меня выводит тока то что перед этим Ответ и дальше прога глючит и выходит окошко вот с этим текстом Run-Time Check Failure #3 - The variable 'k' is deing used without deing initialized.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
09.09.2010, 17:44     Структур комплексных чисел #28
White Luna,
А теперь ещё разок и помедленнее... Почему вы пишите scanf_s там, где должна быть printf?
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.09.2010, 17:46  [ТС]     Структур комплексных чисел #29
Цитата Сообщение от silent_1991 Посмотреть сообщение
White Luna,
А теперь ещё разок и помедленнее... Почему вы пишите scanf_s там, где должна быть printf?
там scanf_s , просто описались наверно когда тут писали, просто чутьь выше последний вариант проги посмотри
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 17:47     Структур комплексных чисел #30
Цитата Сообщение от White Luna Посмотреть сообщение
это то верно но у меня выводит тока то что перед этим Ответ и дальше прога глючит и выходит окошко вот с этим текстом
Так Вы после слова "Ответ" scanf_s на printf поменяйте - вот я так сделал и всё работает!
Структур комплексных чисел
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.09.2010, 18:34  [ТС]     Структур комплексных чисел #31
я сделала как ты сказал всеравно та же шняга появляется

Добавлено через 39 минут
silent_1991, мож показать свой вариант проги мож я все таки что то упускаю?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 18:47     Структур комплексных чисел #32
Цитата Сообщение от White Luna Посмотреть сообщение
мож показать свой вариант проги мож я все таки что то упускаю?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
#define STR_LEN 256
    
char * ru(const char * str){
    static char buf[STR_LEN];
    CharToOemA(str, buf);
    return buf;
}
 
typedef struct {
    double Re;
    double Im;
} complex_t;
 
int main(void){
    complex_t a, b, c;
    char action;
    
    printf("%s\n", ru("Введите действительную чать 1ого числа"));
    if ( scanf("%lf", &a.Re) != 1 ){
        fprintf(stderr, "%s\n", ru("Ошибка ввода a.Re"));
        exit(1);
    }
    printf("%s\n", ru("Введите мнимую чать 1ого числа"));
    if ( scanf("%lf", &a.Im) != 1 ){
        fprintf(stderr, "%s\n", ru("Ошибка ввода a.Im"));
        exit(1);
    }
    printf("%s\n", ru("Введите действительную чать 2ого числа"));
    if ( scanf("%lf", &b.Re) != 1 ){
        fprintf(stderr, "%s\n", ru("Ошибка ввода b.Re"));
        exit(1);
    }
    printf("%s\n", ru("Введите мнимую чать 2ого числа"));
    if ( scanf("%lf", &b.Im) != 1 ){
        fprintf(stderr, "%s\n", ru("Ошибка ввода b.Im"));
        exit(1);
    }
    printf("%s\n", ru("Введите знак действия, которое хотите совершить -, +, *, /  или  s, что будет\n"
    "означать что вам необходимо найти сопряженное  для 1ого комплексного числа"));
    if ( scanf("%*c%c", &action) != 1 ){
        fprintf(stderr, "%s\n", ru("Ошибка ввода знака действия"));
        exit(1);
    }
    
    switch ( action ){
        case '-' :
            c.Re = a.Re - b.Re;
            c.Im = a.Im - b.Im;
        break;
        case '+' :
            c.Re = a.Re + b.Re;
            c.Im = a.Im + b.Im;
        break;
        case '*' :
            c.Re = a.Re * b.Re - a.Im * b.Im;
            c.Im = a.Re * b.Im + a.Im + b.Re;
        break;
        case '/' :
            c.Re = (a.Re * b.Re + a.Im * b.Im)/(b.Re * b.Re + b.Im * b.Im);
            c.Im = (a.Im * b.Re - a.Re * b.Im)/(b.Re * b.Re + b.Im * b.Im);
        break;
        case 's' :
            c.Re = a.Re;
            c.Im = -1 * a.Im;
        break;
        default :
            fprintf(stderr, "%s\n", ru("Неизвестное действие"));
            exit(1);
        break;
    }
    
    printf("%s: %f + %f\n", ru("Ответ"), c.Re, c.Im);
    
    system("pause");
    exit(0);
}
правильность формул не проверял, сделал так же, как у Вас было...
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
09.09.2010, 18:49     Структур комплексных чисел #33
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "tchar.h"
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
struct COMPLEX
{
    double Re;
    double Im;
};
 
int _tmain()
{
    COMPLEX a, f, k;
    char w;
    printf("x1 = ");
    scanf("%lf", &a.Re);
    printf("y1 = ");
    scanf("%lf", &a.Im);
 
    printf("x2 = ");
    scanf("%lf", &f.Re);
    printf("y2 = ");
    scanf("%lf", &f.Im);
 
    printf("-, +, *, /, s: ");
    scanf("%*c%c", &w);
 
    switch (w)
    {
        case '-':
            k.Re = a.Re - f.Re;
            k.Im = a.Im - f.Im;
            break;
        case '+':
            k.Re = a.Re + f.Re;
            k.Im = a.Im + f.Im;
            break;
        case '*':
            k.Re = a.Re * f.Re - a.Im * f.Im;
            k.Im = a.Re * f.Im + a.Im * f.Re;
            break;
        case '/':
            k.Re = (a.Re * f.Re + a.Im * f.Im) / (f.Re * f.Re + f.Im * f.Im);
            k.Im = (a.Im * f.Re - a.Re * f.Im) / (f.Re * f.Re + f.Im * f.Im);
            break;
        case 's':
            k.Re = a.Re;
            k.Im = -a.Im;
            break;
    };
 
    printf("%lf + %lfi", k.Re, k.Im);
 
    getch();
    return 0;
}
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
10.09.2010, 08:46  [ТС]     Структур комплексных чисел #34
блин где то лажаю.... у ми ваши проги тож работают, почему же моя дурью страдает

Добавлено через 12 часов 44 минуты
? подскажите как можно перед мнимой частью, если она отрицательная, поменять 2 знака на 1. а топри выводе получается что типо такого a + - bi? а хотелось бы чтобы знак был тока 1 минус,
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
10.09.2010, 09:46     Структур комплексных чисел #35
Цитата Сообщение от White Luna Посмотреть сообщение
? подскажите как можно перед мнимой частью, если она отрицательная, поменять 2 знака на 1. а топри выводе получается что типо такого a + - bi? а хотелось бы чтобы знак был тока 1 минус,
Проще простого:
C++
1
2
3
    char s[4] = "\n";
    printf("%2s%43s%n" + (k.Im > 0) * 3, s, s, s);
    printf("%lf %s %lfi\n", k.Re, s, k.Im > 0 ? k.Im : -k.Im);
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
10.09.2010, 14:27  [ТС]     Структур комплексных чисел #36
у ми проще)
C++
1
2
if (k.Im<0) { printf("%lf  %lfi \n", k.Re, k.Im);}
        else printf("%lf + %lfi \n", k.Re, k.Im);
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
11.09.2010, 12:15     Структур комплексных чисел #37
White Luna,
Вы нашли ошибку в своём коде?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2010, 23:02     Структур комплексных чисел
Еще ссылки по теме:

Класс комплексных чисел - C++
Ребят, помогите пожалуйста написать класс комплексных чисел... Я плохо разбираюсь в объектно-ориентированном программировании, учусь,...

Множество комплексных чисел - C++
Здравствуйте. Хочу создать множество комплексных чисел, но выводит ошибку: error C2100: недопустимое косвенное обращение. Что здесь не так?...

Сложение комплексных чисел - C++
Необходимо ввести с клавиатуры 2 комплексных числа, после чего получить результат их сложения. Использовать строки

Калькулятор комплексных чисел - C++
Помогите пожалуйста с задачей. Выполнить структурную декомпозицию, разработать структурную схему и алгоритмы программ. Реализовать на...

Считывание комплексных чисел - C++
скажем если в с я считываю комплексные числа так: scanf(&quot;%d+%di&quot;,&amp;a1,&amp;b1); как это сделать в с++? покажите на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
17.09.2010, 23:02  [ТС]     Структур комплексных чисел #38
Вот еще 2 версии рабочей проги по этому вопросу
1) через оператор switch
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// laba1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "tchar.h"
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
struct KOMPLEX
{
        double Re;
        double Im;
};
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
        KOMPLEX a, f, k;
        char w;
        int q=1;
        do 
        {
        printf("Введите действительную чать 1ого числа \n ");
        scanf("%lf", &a.Re);
        printf("Введите мнимую чать 1ого числа \n ");
        scanf("%lf", &a.Im);
 
        printf("Введите действительную чать 2ого числа \n ");
        scanf("%lf", &f.Re);
        printf("Введите мнимую чать 2ого числа \n ");
        scanf("%lf", &f.Im);
 
        printf("Введите знак действи который хотите совершить -, +, *, /  или  s -  что будет означать что вам необходимо найти сопряженное  для 1ого комплексного числа: \n ");
        scanf("%*c%c", &w); // конструкция %*c, "проглатывает" символ '\n', который в потоке после предыдущего ввода остался,
                            // %с - считывает 1 символ и помещает его в переменную w;
 
        switch (w)
        {
                case '-':
                        k.Re = a.Re - f.Re;
                        k.Im = a.Im - f.Im;
                        break;
                case '+':
                        k.Re = a.Re + f.Re;
                        k.Im = a.Im + f.Im;
                        break;
                case '*':
                        k.Re = a.Re * f.Re - a.Im * f.Im;
                        k.Im = a.Re * f.Im + a.Im * f.Re;
                        break;
                case '/':
                        k.Re = (a.Re * f.Re + a.Im * f.Im) / (f.Re * f.Re + f.Im * f.Im);
                        k.Im = (a.Im * f.Re - a.Re * f.Im) / (f.Re * f.Re + f.Im * f.Im);
                        break;
                case 's':
                        k.Re = a.Re;
                        k.Im = - a.Im;
                        break;
        };
        printf (" Ответ \n");
        if (k.Im<0) { printf("%lf  %lfi \n", k.Re, k.Im);}
        else printf("%lf + %lfi \n", k.Re, k.Im);
 
        printf ("Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
        scanf_s ("%d", &q);
        }
        while (q==1);
        
       system("pause");
       exit(0);
        _getch();
        return 0;
}
2) через тот же оператор + с использованием функций
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/ hftfh.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "tchar.h"
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
struct KOMPLEX
{
        double Re;
        double Im;
};
 
                    KOMPLEX minus (KOMPLEX &a, KOMPLEX &f){
                    KOMPLEX k; 
                    k.Re = a.Re - f.Re;
                    k.Im = a.Im - f.Im;
                    return k;};                       
                    
                    KOMPLEX plus (KOMPLEX &a, KOMPLEX &f){
                    KOMPLEX k;
                    k.Re = a.Re + f.Re;
                    k.Im = a.Im + f.Im;
                    return k;};
                    
                        KOMPLEX umnog (KOMPLEX &a, KOMPLEX &f){
                        KOMPLEX k;
                        k.Re = a.Re * f.Re - a.Im * f.Im;
                        k.Im = a.Re * f.Im + a.Im * f.Re;
                        return k;};
                     
               
                        KOMPLEX delenie (KOMPLEX &a, KOMPLEX &f){
                        KOMPLEX k; 
                        k.Re = (a.Re * f.Re + a.Im * f.Im) / (f.Re * f.Re + f.Im * f.Im);
                        k.Im = (a.Im * f.Re - a.Re * f.Im) / (f.Re * f.Re + f.Im * f.Im);
                        return k;};
                     
               
                        KOMPLEX sopryg (KOMPLEX &a, KOMPLEX &f){
                        KOMPLEX k;
                        k.Re = a.Re;
                        k.Im = - a.Im;
                        return k;};
 
                        void znak (KOMPLEX &k){
                        if (k.Im<0) { printf("%lf  %lfi \n", k.Re, k.Im);}
                        else printf("%lf + %lfi \n", k.Re, k.Im);};
int _tmain()
{
        setlocale (LC_ALL, "Russian");
        KOMPLEX a, f, k;
        char w;
        int q=1;
        do{
        printf("Введите действительную чать 1ого числа \n ");
        scanf("%lf", &a.Re);
        printf("Введите мнимую чать 1ого числа \n ");
        scanf("%lf", &a.Im);
 
        printf("Введите действительную чать 2ого числа \n ");
        scanf("%lf", &f.Re);
        printf("Введите мнимую чать 2ого числа \n ");
        scanf("%lf", &f.Im);
 
        printf("Введите знак действи который хотите совершить -, +, *, /  или  s -  что будет означать что вам необходимо найти сопряженное  для 1ого комплексного числа: \n ");
        scanf("%s", &w);
printf (" Ответ \n");
 
        switch (w)
        {
                case '-':
                       znak(minus( a,f));
                        break;
                case '+':
                        znak(plus( a,f));
                                                break;
                case '*':
                        znak(umnog( a,f));                      
                        break;
                case '/':
                        znak(delenie( a,f));
                                                break;
                case 's':
                        znak(sopryg( a,f));                     
                        break;
        };
       
        
 
        printf ("Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
        scanf_s ("%d", &q);
        }
        while (q==1);
       system("pause");
       exit(0);
        _getch();
        return 0;
}
Yandex
Объявления
17.09.2010, 23:02     Структур комплексных чисел
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru