Definir o tipo complexo, para representar números complexos da forma a + bi, onde a e b são valores inteiros. Escrever as funções que completam o seguinte programa:
int main()
{
    complexo x,y,z;
    x = lerComplexo("x");
    y = lerComplexo("y");
    z = somarComplexos (x,y);
    mostrarComplexo("z",z);
    return 0;
}

Passo 1

O enunciado pede para a gente criar um tipo em C chamado complexo que represente números da forma a + bi, onde a e b são inteiros, e implementar três funções: lerComplexo (para ler um complexo do teclado), somarComplexos (para somar dois complexos) e mostrarComplexo (para exibir um complexo formatado). Vamos precisar de structs em C e de funções que retornem structs.

Passo 2

Primeiro, vamos definir o tipo complexo usando um typedef de struct. Assim conseguimos agrupar as partes real e imaginária num único objeto e passar isso entre funções sem complicação.

Passo 3

Para ler um complexo, a função lerComplexo vai receber o nome do complexo (uma string) para usar no prompt. A gente declara uma variável do tipo complexo, pede a parte real e imaginária com scanf e retorna essa variável.

Passo 4

Para somar dois complexos, a função somarComplexos deve simplesmente criar um novo complexo cujos campos real e imaginária são a soma dos respectivos campos dos operandos e então retornar esse resultado.

Passo 5

Para mostrar um complexo, a função mostrarComplexo recebe o nome e o struct. Ela verifica se a parte imaginária é não negativa para decidir exibir o sinal ‘+’ ou ‘-’ e imprime no formato “nome = a + bi” ou “nome = a - bi”.

Passo 6

Juntando tudo, incluímos <stdio.h>, definimos o struct, implementamos as três funções e usamos o main fornecido para ler x, ler y, somar e mostrar z.

Resposta

#include <stdio.h>
#include <stdlib.h>
typedef struct {
int real;
int imag;
} complexo;
complexo lerComplexo(const char *nome) {
complexo c;
printf(“Entre com o número complexo %s (parte real e imaginária): “, nome);
scanf(”%d %d”, &c.real, &c.imag);
return c;
}
complexo somarComplexos(complexo a, complexo b) {
complexo s;
s.real = a.real + b.real;
s.imag = a.imag + b.imag;
return s;
}
void mostrarComplexo(const char *nome, complexo c) {
if (c.imag >= 0)
printf("%s = %d + %di\n", nome, c.real, c.imag);
else
printf("%s = %d - %di\n", nome, c.real, -c.imag);
}
int main() {
complexo x, y, z;
x = lerComplexo(“x”);
y = lerComplexo(“y”);
z = somarComplexos(x, y);
mostrarComplexo(“z”, z);
return 0;
}

Exercícios relacionados