#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/QtdGA0LDRhtC40Lk6Iik7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IHN1bSA9IGFkZENvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoIlxu0KHRg9C80LzQsDogIik7CiAgICBwcmludENvbXBsZXgoc3VtKTsKICAgIAogICAgc3RydWN0IENvbXBsZXggZGlmZiA9IHN1YnRyYWN0Q29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50ZigiXG7QoNCw0LfQvdC+0YHRgtGMOiAiKTsKICAgIHByaW50Q29tcGxleChkaWZmKTsKICAgIAogICAgc3RydWN0IENvbXBsZXggcHJvZCA9IG11bHRpcGx5Q29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50Zigi0J/RgNC+0LjQt9Cy0LXQtNC10L3QuNC1OiAiKTsKICAgIHByaW50Q29tcGxleChwcm9kKTsKICAgIAogICAgc3RydWN0IENvbXBsZXggcXVvdCA9IGRpdmlkZUNvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCn0LDRgdGC0L3QvtC1OiAiKTsKICAgIHByaW50Q29tcGxleChxdW90KTsKICAgIAogICAgcmV0dXJuIDA7Cn0KCi8vIDIuINCk0YPQvdC60YbQuNGPINC00LvRjyDQstCy0L7QtNCwINC60L7QvNC/0LvQtdC60YHQvdC+0LPQviDRh9C40YHQu9CwCnN0cnVjdCBDb21wbGV4IGlucHV0Q29tcGxleCgpIHsKICAgIHN0cnVjdCBDb21wbGV4IGM7CiAgICBwcmludGYoItCS0LLQtdC00LjRgtC1INC00LXQudGB0YLQstC40YLQtdC70YzQvdGD0Y4g0YfQsNGB0YLRjDogXG4iKTsKICAgIHNjYW5mKCIlbGYiLCAmYy5yZWFsKTsKICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0LzQvdC40LzRg9GOINGH0LDRgdGC0Yw6IFxuIik7CiAgICBzY2FuZigiJWxmIiwgJmMuaW1hZyk7CiAgICByZXR1cm4gYzsKfQoKLy8gMy4g0KTRg9C90LrRhtC40Y8g0LTQu9GPINCy0YvQstC+0LTQsCDQutC+0LzQv9C70LXQutGB0L3QvtCz0L4g0YfQuNGB0LvQsAp2b2lkIHByaW50Q29tcGxleChzdHJ1Y3QgQ29tcGxleCBjKSB7CiAgICBpZiAoYy5pbWFnID49IDApCiAgICAgICAgcHJpbnRmKCIlLjJmICsgaSolLjJmXG4iLCBjLnJlYWwsIGMuaW1hZyk7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCIlLjJmIC0gaSolLjJmXG4iLCBjLnJlYWwsIC1jLmltYWcpOwp9CgovLyA0LiDQpNGD0L3QutGG0LjQuCDQsNGA0LjRhNC80LXRgtC40YfQtdGB0LrQuNGFINC+0L/QtdGA0LDRhtC40LkKCi8vINCh0LvQvtC20LXQvdC40LUKc3RydWN0IENvbXBsZXggYWRkQ29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKSB7CiAgICBzdHJ1Y3QgQ29tcGxleCByZXN1bHQ7CiAgICByZXN1bHQucmVhbCA9IGEucmVhbCArIGIucmVhbDsKICAgIHJlc3VsdC5pbWFnID0gYS5pbWFnICsgYi5pbWFnOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g0JLRi9GH0LjRgtCw0L3QuNC1CnN0cnVjdCBDb21wbGV4IHN1YnRyYWN0Q29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKSB7CiAgICBzdHJ1Y3QgQ29tcGxleCByZXN1bHQ7CiAgICByZXN1bHQucmVhbCA9IGEucmVhbCAtIGIucmVhbDsKICAgIHJlc3VsdC5pbWFnID0gYS5pbWFnIC0gYi5pbWFnOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g0KPQvNC90L7QttC10L3QuNC1CnN0cnVjdCBDb21wbGV4IG11bHRpcGx5Q29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKSB7CiAgICBzdHJ1Y3QgQ29tcGxleCByZXN1bHQ7CiAgICByZXN1bHQucmVhbCA9IGEucmVhbCAqIGIucmVhbCAtIGEuaW1hZyAqIGIuaW1hZzsKICAgIHJlc3VsdC5pbWFnID0gYS5yZWFsICogYi5pbWFnICsgYS5pbWFnICogYi5yZWFsOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g0JTQtdC70LXQvdC40LUKc3RydWN0IENvbXBsZXggZGl2aWRlQ29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKSB7CiAgICBzdHJ1Y3QgQ29tcGxleCByZXN1bHQ7CiAgICBkb3VibGUgZGVub21pbmF0b3IgPSBiLnJlYWwgKiBiLnJlYWwgKyBiLmltYWcgKiBiLmltYWc7CiAgICBpZiAoZGVub21pbmF0b3IgPT0gMCkgewogICAgICAgIHByaW50Zigi0J7RiNC40LHQutCwOiDQtNC10LvQtdC90LjQtSDQvdCwINC90L7Qu9GMIVxuIik7CiAgICAgICAgcmVzdWx0LnJlYWwgPSByZXN1bHQuaW1hZyA9IDA7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIHJlc3VsdC5yZWFsID0gKGEucmVhbCAqIGIucmVhbCArIGEuaW1hZyAqIGIuaW1hZykgLyBkZW5vbWluYXRvcjsKICAgIHJlc3VsdC5pbWFnID0gKGEuaW1hZyAqIGIucmVhbCAtIGEucmVhbCAqIGIuaW1hZykgLyBkZW5vbWluYXRvcjsKICAgIHJldHVybiByZXN1bHQ7Cn0=