#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Результаты операций:\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/QtdGA0LDRhtC40Lk6XG4iKTsKICAgIAogICAgc3RydWN0IENvbXBsZXggc3VtID0gYWRkQ29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50Zigi0KHRg9C80LzQsDogIik7CiAgICBwcmludENvbXBsZXgoc3VtKTsKICAgIAogICAgc3RydWN0IENvbXBsZXggZGlmZiA9IHN1YnRyYWN0Q29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50Zigi0KDQsNC30L3QvtGB0YLRjDogIik7CiAgICBwcmludENvbXBsZXgoZGlmZik7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IHByb2QgPSBtdWx0aXBseUNvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCf0YDQvtC40LfQstC10LTQtdC90LjQtTogIik7CiAgICBwcmludENvbXBsZXgocHJvZCk7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IHF1b3QgPSBkaXZpZGVDb21wbGV4KG51bTEsIG51bTIpOwogICAgcHJpbnRmKCLQp9Cw0YHRgtC90L7QtTogIik7CiAgICBwcmludENvbXBsZXgocXVvdCk7CiAgICAKICAgIHJldHVybiAwOwp9CgovLyAyLiDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0LLQstC+0LTQsCDQutC+0LzQv9C70LXQutGB0L3QvtCz0L4g0YfQuNGB0LvQsApzdHJ1Y3QgQ29tcGxleCBpbnB1dENvbXBsZXgoKSB7CiAgICBzdHJ1Y3QgQ29tcGxleCBjOwogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3Rg9GOINGH0LDRgdGC0Yw6IFxuIik7CiAgICBzY2FuZigiJWxmIiwgJmMucmVhbCk7CiAgICBwcmludGYoItCS0LLQtdC00LjRgtC1INC80L3QuNC80YPRjiDRh9Cw0YHRgtGMOiBcbiIpOwogICAgc2NhbmYoIiVsZiIsICZjLmltYWcpOwogICAgcmV0dXJuIGM7Cn0KCi8vIDMuINCk0YPQvdC60YbQuNGPINC00LvRjyDQstGL0LLQvtC00LAg0LrQvtC80L/Qu9C10LrRgdC90L7Qs9C+INGH0LjRgdC70LAKdm9pZCBwcmludENvbXBsZXgoc3RydWN0IENvbXBsZXggYykgewogICAgaWYgKGMuaW1hZyA+PSAwKQogICAgICAgIHByaW50ZigiJS4yZiArIGkqJS4yZlxuIiwgYy5yZWFsLCBjLmltYWcpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiJS4yZiAtIGkqJS4yZlxuIiwgYy5yZWFsLCAtYy5pbWFnKTsKfQoKLy8gNC4g0KTRg9C90LrRhtC40Lgg0LDRgNC40YTQvNC10YLQuNGH0LXRgdC60LjRhSDQvtC/0LXRgNCw0YbQuNC5CgovLyDQodC70L7QttC10L3QuNC1CnN0cnVjdCBDb21wbGV4IGFkZENvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgKyBiLnJlYWw7CiAgICByZXN1bHQuaW1hZyA9IGEuaW1hZyArIGIuaW1hZzsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCS0YvRh9C40YLQsNC90LjQtQpzdHJ1Y3QgQ29tcGxleCBzdWJ0cmFjdENvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgLSBiLnJlYWw7CiAgICByZXN1bHQuaW1hZyA9IGEuaW1hZyAtIGIuaW1hZzsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCj0LzQvdC+0LbQtdC90LjQtQpzdHJ1Y3QgQ29tcGxleCBtdWx0aXBseUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgKiBiLnJlYWwgLSBhLmltYWcgKiBiLmltYWc7CiAgICByZXN1bHQuaW1hZyA9IGEucmVhbCAqIGIuaW1hZyArIGEuaW1hZyAqIGIucmVhbDsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCU0LXQu9C10L3QuNC1CnN0cnVjdCBDb21wbGV4IGRpdmlkZUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgZG91YmxlIGRlbm9taW5hdG9yID0gYi5yZWFsICogYi5yZWFsICsgYi5pbWFnICogYi5pbWFnOwogICAgaWYgKGRlbm9taW5hdG9yID09IDApIHsKICAgICAgICBwcmludGYoItCe0YjQuNCx0LrQsDog0LTQtdC70LXQvdC40LUg0L3QsCDQvdC+0LvRjCFcbiIpOwogICAgICAgIHJlc3VsdC5yZWFsID0gcmVzdWx0LmltYWcgPSAwOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICByZXN1bHQucmVhbCA9IChhLnJlYWwgKiBiLnJlYWwgKyBhLmltYWcgKiBiLmltYWcpIC8gZGVub21pbmF0b3I7CiAgICByZXN1bHQuaW1hZyA9IChhLmltYWcgKiBiLnJlYWwgLSBhLnJlYWwgKiBiLmltYWcpIC8gZGVub21pbmF0b3I7CiAgICByZXR1cm4gcmVzdWx0Owp9