#include <stdio.h>
struct Complex
{
double real; //Действит. часть
double imag; //Мнимая часть
};
struct Complex inputComplex();
void printComplex(struct Complex c);
struct Complex addComplex(struct Complex a, struct Complex b);
struct Complex subtractComplex(struct Complex a, struct Complex b);
struct Complex multiplyComplex(struct Complex a, struct Complex b);
struct Complex divideComplex(struct Complex a, struct Complex b);
int main()
{
struct Complex num1, num2;
printf("Введите первое комплексное число:\n"); num1 = inputComplex();
printf("Введите второе комплексное число:\n"); num2 = inputComplex();
printComplex(num1);
printComplex(num2);
printf("\nРезультаты операций:");
struct Complex sum = addComplex(num1, num2);
printComplex(sum);
struct Complex diff = subtractComplex(num1, num2);
printComplex(diff);
struct Complex prod = multiplyComplex(num1, num2);
printComplex(prod);
struct Complex quot = divideComplex(num1, num2);
printComplex(quot);
return 0;
}
// 2. Функция для ввода комплексного числа
struct Complex inputComplex() {
struct Complex c;
printf("Введите действительную часть: \n"); printf("Введите мнимую часть: \n"); return c;
}
// 3. Функция для вывода комплексного числа
void printComplex(struct Complex c) {
if (c.imag >= 0)
printf("%.2f + i*%.2f\n", c.
real, c.
imag); else
printf("%.2f - i*%.2f\n", c.
real, -c.
imag); }
// 4. Функции арифметических операций
// Сложение
struct Complex addComplex(struct Complex a, struct Complex b) {
struct Complex result;
result.real = a.real + b.real;
result.imag = a.imag + b.imag;
return result;
}
// Вычитание
struct Complex subtractComplex(struct Complex a, struct Complex b) {
struct Complex result;
result.real = a.real - b.real;
result.imag = a.imag - b.imag;
return result;
}
// Умножение
struct Complex multiplyComplex(struct Complex a, struct Complex b) {
struct Complex result;
result.real = a.real * b.real - a.imag * b.imag;
result.imag = a.real * b.imag + a.imag * b.real;
return result;
}
// Деление
struct Complex divideComplex(struct Complex a, struct Complex b) {
struct Complex result;
double denominator = b.real * b.real + b.imag * b.imag;
if (denominator == 0) {
printf("Ошибка: деление на ноль!\n"); result.real = result.imag = 0;
return result;
}
result.real = (a.real * b.real + a.imag * b.imag) / denominator;
result.imag = (a.imag * b.real - a.real * b.imag) / denominator;
return result;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgQ29tcGxleCAKewogICAgZG91YmxlIHJlYWw7IC8v0JTQtdC50YHRgtCy0LjRgi4g0YfQsNGB0YLRjAogICAgZG91YmxlIGltYWc7IC8v0JzQvdC40LzQsNGPINGH0LDRgdGC0YwKfTsKCnN0cnVjdCBDb21wbGV4IGlucHV0Q29tcGxleCgpOwp2b2lkIHByaW50Q29tcGxleChzdHJ1Y3QgQ29tcGxleCBjKTsKc3RydWN0IENvbXBsZXggYWRkQ29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKTsKc3RydWN0IENvbXBsZXggc3VidHJhY3RDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpOwpzdHJ1Y3QgQ29tcGxleCBtdWx0aXBseUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYik7CnN0cnVjdCBDb21wbGV4IGRpdmlkZUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYik7CgppbnQgbWFpbigpIAp7CiAgICBzdHJ1Y3QgQ29tcGxleCBudW0xLCBudW0yOwogICAgCiAgICBwcmludGYoItCS0LLQtdC00LjRgtC1INC/0LXRgNCy0L7QtSDQutC+0LzQv9C70LXQutGB0L3QvtC1INGH0LjRgdC70L46XG4iKTsKICAgIG51bTEgPSBpbnB1dENvbXBsZXgoKTsKICAgIAogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQstGC0L7RgNC+0LUg0LrQvtC80L/Qu9C10LrRgdC90L7QtSDRh9C40YHQu9C+OlxuIik7CiAgICBudW0yID0gaW5wdXRDb21wbGV4KCk7CiAgICAKICAgIHByaW50ZigiXG7Qn9C10YDQstC+0LUg0YfQuNGB0LvQvjogIik7CiAgICBwcmludENvbXBsZXgobnVtMSk7CiAgICBwcmludGYoItCS0YLQvtGA0L7QtSDRh9C40YHQu9C+OiAiKTsKICAgIHByaW50Q29tcGxleChudW0yKTsKICAgIAogICAgcHJpbnRmKCJcbtCg0LXQt9GD0LvRjNGC0LDRgtGLINC+0L/QtdGA0LDRhtC40Lk6Iik7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IHN1bSA9IGFkZENvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCh0YPQvNC80LA6ICIpOwogICAgcHJpbnRDb21wbGV4KHN1bSk7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IGRpZmYgPSBzdWJ0cmFjdENvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCg0LDQt9C90L7RgdGC0Yw6ICIpOwogICAgcHJpbnRDb21wbGV4KGRpZmYpOwogICAgCiAgICBzdHJ1Y3QgQ29tcGxleCBwcm9kID0gbXVsdGlwbHlDb21wbGV4KG51bTEsIG51bTIpOwogICAgcHJpbnRmKCLQn9GA0L7QuNC30LLQtdC00LXQvdC40LU6ICIpOwogICAgcHJpbnRDb21wbGV4KHByb2QpOwogICAgCiAgICBzdHJ1Y3QgQ29tcGxleCBxdW90ID0gZGl2aWRlQ29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50Zigi0KfQsNGB0YLQvdC+0LU6ICIpOwogICAgcHJpbnRDb21wbGV4KHF1b3QpOwogICAgCiAgICByZXR1cm4gMDsKfQoKLy8gMi4g0KTRg9C90LrRhtC40Y8g0LTQu9GPINCy0LLQvtC00LAg0LrQvtC80L/Qu9C10LrRgdC90L7Qs9C+INGH0LjRgdC70LAKc3RydWN0IENvbXBsZXggaW5wdXRDb21wbGV4KCkgewogICAgc3RydWN0IENvbXBsZXggYzsKICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YPRjiDRh9Cw0YHRgtGMOiBcbiIpOwogICAgc2NhbmYoIiVsZiIsICZjLnJlYWwpOwogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQvNC90LjQvNGD0Y4g0YfQsNGB0YLRjDogXG4iKTsKICAgIHNjYW5mKCIlbGYiLCAmYy5pbWFnKTsKICAgIHJldHVybiBjOwp9CgovLyAzLiDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0LLRi9Cy0L7QtNCwINC60L7QvNC/0LvQtdC60YHQvdC+0LPQviDRh9C40YHQu9CwCnZvaWQgcHJpbnRDb21wbGV4KHN0cnVjdCBDb21wbGV4IGMpIHsKICAgIGlmIChjLmltYWcgPj0gMCkKICAgICAgICBwcmludGYoIiUuMmYgKyBpKiUuMmZcbiIsIGMucmVhbCwgYy5pbWFnKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoIiUuMmYgLSBpKiUuMmZcbiIsIGMucmVhbCwgLWMuaW1hZyk7Cn0KCi8vIDQuINCk0YPQvdC60YbQuNC4INCw0YDQuNGE0LzQtdGC0LjRh9C10YHQutC40YUg0L7Qv9C10YDQsNGG0LjQuQoKLy8g0KHQu9C+0LbQtdC90LjQtQpzdHJ1Y3QgQ29tcGxleCBhZGRDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpIHsKICAgIHN0cnVjdCBDb21wbGV4IHJlc3VsdDsKICAgIHJlc3VsdC5yZWFsID0gYS5yZWFsICsgYi5yZWFsOwogICAgcmVzdWx0LmltYWcgPSBhLmltYWcgKyBiLmltYWc7CiAgICByZXR1cm4gcmVzdWx0Owp9CgovLyDQktGL0YfQuNGC0LDQvdC40LUKc3RydWN0IENvbXBsZXggc3VidHJhY3RDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpIHsKICAgIHN0cnVjdCBDb21wbGV4IHJlc3VsdDsKICAgIHJlc3VsdC5yZWFsID0gYS5yZWFsIC0gYi5yZWFsOwogICAgcmVzdWx0LmltYWcgPSBhLmltYWcgLSBiLmltYWc7CiAgICByZXR1cm4gcmVzdWx0Owp9CgovLyDQo9C80L3QvtC20LXQvdC40LUKc3RydWN0IENvbXBsZXggbXVsdGlwbHlDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpIHsKICAgIHN0cnVjdCBDb21wbGV4IHJlc3VsdDsKICAgIHJlc3VsdC5yZWFsID0gYS5yZWFsICogYi5yZWFsIC0gYS5pbWFnICogYi5pbWFnOwogICAgcmVzdWx0LmltYWcgPSBhLnJlYWwgKiBiLmltYWcgKyBhLmltYWcgKiBiLnJlYWw7CiAgICByZXR1cm4gcmVzdWx0Owp9CgovLyDQlNC10LvQtdC90LjQtQpzdHJ1Y3QgQ29tcGxleCBkaXZpZGVDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpIHsKICAgIHN0cnVjdCBDb21wbGV4IHJlc3VsdDsKICAgIGRvdWJsZSBkZW5vbWluYXRvciA9IGIucmVhbCAqIGIucmVhbCArIGIuaW1hZyAqIGIuaW1hZzsKICAgIGlmIChkZW5vbWluYXRvciA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCLQntGI0LjQsdC60LA6INC00LXQu9C10L3QuNC1INC90LAg0L3QvtC70YwhXG4iKTsKICAgICAgICByZXN1bHQucmVhbCA9IHJlc3VsdC5pbWFnID0gMDsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgcmVzdWx0LnJlYWwgPSAoYS5yZWFsICogYi5yZWFsICsgYS5pbWFnICogYi5pbWFnKSAvIGRlbm9taW5hdG9yOwogICAgcmVzdWx0LmltYWcgPSAoYS5pbWFnICogYi5yZWFsIC0gYS5yZWFsICogYi5pbWFnKSAvIGRlbm9taW5hdG9yOwogICAgcmV0dXJuIHJlc3VsdDsKfQ==