Sejam z=a+bi e w=c+ di dois números complexos e i a unidade imaginária. Crie quatro funções (uma para cada operação abaixo) que operem sobre dois números complexos informados pelo usuário e retornam o número complexo resultante da operação escolhida. Utilize struct para representar os números complexos
Adição: z+w=(a+c)+(b+d) i
Subtração: z-w=(a-c)+(b-d) i
Multiplicação:
Divisão:

Passo 1

O enunciado pede pra gente representar números complexos usando um struct em C e criar quatro funções (adição, subtração, multiplicação e divisão) que recebam dois complexos e devolvam o resultado dessas operações.

Passo 2

Primeiro vamos definir o struct que guarda a parte real e a parte imaginária de um número complexo; vamos chamar de Complex.
Em seguida, criamos a função de adição que, dado z=(a+bi) e w=(c+di), retorna (a+c) + (b+d)i.
Depois, montamos a função de subtração que retorna (a−c) + (b−d)i.
Para a multiplicação, usamos a fórmula (ac − bd) + (ad + bc)i.
Por fim, na divisão, calculamos o denominador den = c² + d² e aplicamos real = (ac + bd)/den e imag = (bc − ad)/den.

Resposta

#include <stdio.h>
// Representação de um número complexo
typedef struct {
double real;
double imag;
} Complex;
// Adição: (a+bi) + (c+di) = (a+c) + (b+d)i
Complex add(Complex z, Complex w) {
Complex result;
result.real = z.real + w.real;
result.imag = z.imag + w.imag;
return result;
}
// Subtração: (a+bi) - (c+di) = (a-c) + (b-d)i
Complex subtract(Complex z, Complex w) {
Complex result;
result.real = z.real - w.real;
result.imag = z.imag - w.imag;
return result;
}
// Multiplicação: (a+bi)(c+di) = (ac - bd) + (ad + b*c)i
Complex multiply(Complex z, Complex w) {
Complex result;
result.real = z.real * w.real - z.imag * w.imag;
result.imag = z.real * w.imag + z.imag * w.real;
return result;
}
// Divisão: (a+bi)/(c+di) = [(ac + bd) / (c2+d2)] + [(bc - ad) / (c2+d2)]i
Complex divide(Complex z, Complex w) {
Complex result;
double den = w.real * w.real + w.imag * w.imag;
result.real = (z.real * w.real + z.imag * w.imag) / den;
result.imag = (z.imag * w.real - z.real * w.imag) / den;
return result;
}
// Exemplo de uso
int main() {
Complex z = {2.0, 3.0};
Complex w = {1.0, -4.0};
Complex soma = add(z, w);
Complex dif = subtract(z, w);
Complex prod = multiply(z, w);
Complex quo = divide(z, w);

printf("z + w = %.2f + %.2fi\n", soma.real, soma.imag);
printf("z - w = %.2f + %.2fi\n", dif.real, dif.imag);
printf("z * w = %.2f + %.2fi\n", prod.real, prod.imag);
printf("z / w = %.2f + %.2fi\n", quo.real, quo.imag);

return 0;
}

Exercícios relacionados