#include <stdio.h>
// 1. Определение структурного типа для комплексного числа
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);
// 5. Основная программа в начале
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("Введите действительную часть: "); printf("Введите мнимую часть: "); 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+CgovLyAxLiDQntC/0YDQtdC00LXQu9C10L3QuNC1INGB0YLRgNGD0LrRgtGD0YDQvdC+0LPQviDRgtC40L/QsCDQtNC70Y8g0LrQvtC80L/Qu9C10LrRgdC90L7Qs9C+INGH0LjRgdC70LAKc3RydWN0IENvbXBsZXggewogICAgZG91YmxlIHJlYWw7IC8vINC00LXQudGB0YLQstC40YLQtdC70YzQvdCw0Y8g0YfQsNGB0YLRjAogICAgZG91YmxlIGltYWc7IC8vINC80L3QuNC80LDRjyDRh9Cw0YHRgtGMCn07CgovLyDQn9GA0L7RgtC+0YLQuNC/0Ysg0YTRg9C90LrRhtC40LkgKNC+0LHRitGP0LLQu9C10L3QuNGPKQpzdHJ1Y3QgQ29tcGxleCBpbnB1dENvbXBsZXgoKTsKdm9pZCBwcmludENvbXBsZXgoc3RydWN0IENvbXBsZXggYyk7CnN0cnVjdCBDb21wbGV4IGFkZENvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYik7CnN0cnVjdCBDb21wbGV4IHN1YnRyYWN0Q29tcGxleChzdHJ1Y3QgQ29tcGxleCBhLCBzdHJ1Y3QgQ29tcGxleCBiKTsKc3RydWN0IENvbXBsZXggbXVsdGlwbHlDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpOwpzdHJ1Y3QgQ29tcGxleCBkaXZpZGVDb21wbGV4KHN0cnVjdCBDb21wbGV4IGEsIHN0cnVjdCBDb21wbGV4IGIpOwoKLy8gNS4g0J7RgdC90L7QstC90LDRjyDQv9GA0L7Qs9GA0LDQvNC80LAg0LIg0L3QsNGH0LDQu9C1CmludCBtYWluKCkgewogICAgc3RydWN0IENvbXBsZXggbnVtMSwgbnVtMjsKICAgIAogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQv9C10YDQstC+0LUg0LrQvtC80L/Qu9C10LrRgdC90L7QtSDRh9C40YHQu9C+OlxuIik7CiAgICBudW0xID0gaW5wdXRDb21wbGV4KCk7CiAgICAKICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0LLRgtC+0YDQvtC1INC60L7QvNC/0LvQtdC60YHQvdC+0LUg0YfQuNGB0LvQvjpcbiIpOwogICAgbnVtMiA9IGlucHV0Q29tcGxleCgpOwogICAgCiAgICBwcmludGYoIlxu0J/QtdGA0LLQvtC1INGH0LjRgdC70L46ICIpOwogICAgcHJpbnRDb21wbGV4KG51bTEpOwogICAgcHJpbnRmKCLQktGC0L7RgNC+0LUg0YfQuNGB0LvQvjogIik7CiAgICBwcmludENvbXBsZXgobnVtMik7CiAgICAKICAgIHByaW50ZigiXG7QoNC10LfRg9C70YzRgtCw0YLRiyDQvtC/0LXRgNCw0YbQuNC5OlxuIik7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IHN1bSA9IGFkZENvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCh0YPQvNC80LA6ICIpOwogICAgcHJpbnRDb21wbGV4KHN1bSk7CiAgICAKICAgIHN0cnVjdCBDb21wbGV4IGRpZmYgPSBzdWJ0cmFjdENvbXBsZXgobnVtMSwgbnVtMik7CiAgICBwcmludGYoItCg0LDQt9C90L7RgdGC0Yw6ICIpOwogICAgcHJpbnRDb21wbGV4KGRpZmYpOwogICAgCiAgICBzdHJ1Y3QgQ29tcGxleCBwcm9kID0gbXVsdGlwbHlDb21wbGV4KG51bTEsIG51bTIpOwogICAgcHJpbnRmKCLQn9GA0L7QuNC30LLQtdC00LXQvdC40LU6ICIpOwogICAgcHJpbnRDb21wbGV4KHByb2QpOwogICAgCiAgICBzdHJ1Y3QgQ29tcGxleCBxdW90ID0gZGl2aWRlQ29tcGxleChudW0xLCBudW0yKTsKICAgIHByaW50Zigi0KfQsNGB0YLQvdC+0LU6ICIpOwogICAgcHJpbnRDb21wbGV4KHF1b3QpOwogICAgCiAgICByZXR1cm4gMDsKfQoKLy8gMi4g0KTRg9C90LrRhtC40Y8g0LTQu9GPINCy0LLQvtC00LAg0LrQvtC80L/Qu9C10LrRgdC90L7Qs9C+INGH0LjRgdC70LAKc3RydWN0IENvbXBsZXggaW5wdXRDb21wbGV4KCkgewogICAgc3RydWN0IENvbXBsZXggYzsKICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YPRjiDRh9Cw0YHRgtGMOiAiKTsKICAgIHNjYW5mKCIlbGYiLCAmYy5yZWFsKTsKICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0LzQvdC40LzRg9GOINGH0LDRgdGC0Yw6ICIpOwogICAgc2NhbmYoIiVsZiIsICZjLmltYWcpOwogICAgcmV0dXJuIGM7Cn0KCi8vIDMuINCk0YPQvdC60YbQuNGPINC00LvRjyDQstGL0LLQvtC00LAg0LrQvtC80L/Qu9C10LrRgdC90L7Qs9C+INGH0LjRgdC70LAKdm9pZCBwcmludENvbXBsZXgoc3RydWN0IENvbXBsZXggYykgewogICAgaWYgKGMuaW1hZyA+PSAwKQogICAgICAgIHByaW50ZigiJS4yZiArIGkqJS4yZlxuIiwgYy5yZWFsLCBjLmltYWcpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiJS4yZiAtIGkqJS4yZlxuIiwgYy5yZWFsLCAtYy5pbWFnKTsKfQoKLy8gNC4g0KTRg9C90LrRhtC40Lgg0LDRgNC40YTQvNC10YLQuNGH0LXRgdC60LjRhSDQvtC/0LXRgNCw0YbQuNC5CgovLyDQodC70L7QttC10L3QuNC1CnN0cnVjdCBDb21wbGV4IGFkZENvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgKyBiLnJlYWw7CiAgICByZXN1bHQuaW1hZyA9IGEuaW1hZyArIGIuaW1hZzsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCS0YvRh9C40YLQsNC90LjQtQpzdHJ1Y3QgQ29tcGxleCBzdWJ0cmFjdENvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgLSBiLnJlYWw7CiAgICByZXN1bHQuaW1hZyA9IGEuaW1hZyAtIGIuaW1hZzsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCj0LzQvdC+0LbQtdC90LjQtQpzdHJ1Y3QgQ29tcGxleCBtdWx0aXBseUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgcmVzdWx0LnJlYWwgPSBhLnJlYWwgKiBiLnJlYWwgLSBhLmltYWcgKiBiLmltYWc7CiAgICByZXN1bHQuaW1hZyA9IGEucmVhbCAqIGIuaW1hZyArIGEuaW1hZyAqIGIucmVhbDsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vINCU0LXQu9C10L3QuNC1CnN0cnVjdCBDb21wbGV4IGRpdmlkZUNvbXBsZXgoc3RydWN0IENvbXBsZXggYSwgc3RydWN0IENvbXBsZXggYikgewogICAgc3RydWN0IENvbXBsZXggcmVzdWx0OwogICAgZG91YmxlIGRlbm9taW5hdG9yID0gYi5yZWFsICogYi5yZWFsICsgYi5pbWFnICogYi5pbWFnOwogICAgaWYgKGRlbm9taW5hdG9yID09IDApIHsKICAgICAgICBwcmludGYoItCe0YjQuNCx0LrQsDog0LTQtdC70LXQvdC40LUg0L3QsCDQvdC+0LvRjCFcbiIpOwogICAgICAgIHJlc3VsdC5yZWFsID0gcmVzdWx0LmltYWcgPSAwOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICByZXN1bHQucmVhbCA9IChhLnJlYWwgKiBiLnJlYWwgKyBhLmltYWcgKiBiLmltYWcpIC8gZGVub21pbmF0b3I7CiAgICByZXN1bHQuaW1hZyA9IChhLmltYWcgKiBiLnJlYWwgLSBhLnJlYWwgKiBiLmltYWcpIC8gZGVub21pbmF0b3I7CiAgICByZXR1cm4gcmVzdWx0Owp9