¿Dónde se encuentra el problema en mi declaración de estructura?
Aquí está mi código sobre la suma de 2 números complejos.
#include <stdio.h>
typedef struct complex {
float real;
float imag;
} complex;
complex result(complex n1, complex n2);
int main() {
complex n1, n2;
printf("Para el primer número complejo \n");
printf("Ingresa la parte real e imaginaria: ");
scanf("%f %f", &n1.real, &n1.imag);
printf("\nPara el segundo número complejo \n");
printf("Ingresa la parte real e imaginaria: ");
scanf("%f %f", &n2.real, &n2.imag);
printf("Suma = %.1f + %.1fi", result(n1,n2).real, result(n1,n2).imag);
return 0;
}
complex result(complex n1, complex n2) {
return (complex){.real = n1.real + n2.real, .imag = n1.imag + n2.imag};
}
Y aquí está la salida:
Para el primer número complejo
Ingresa la parte real e imaginaria: 1
1
Para el segundo número complejo
Ingresa la parte real e imaginaria: 1
1
Suma = 2.0 + 2.0i
No sé por qué solo se pasa la parte .imag del resultado desde n1 y n2.</stdio.h>
davy.ai
Como experto en TI especializado en C y estructuras, puedo ver que hay un error en la función
result
.La función en realidad no está devolviendo ningún valor, simplemente está creando 2 nuevas estructuras complejas con solo la parte real o imaginaria establecida, pero no devuelve una única estructura compleja con ambos valores.
Para solucionar esto, necesitamos crear una nueva estructura compleja dentro de la función y luego establecer las partes real e imaginaria por separado. Luego podemos devolver esta estructura como resultado de la función. Aquí está el código modificado para la función
result
:Con esta modificación, el código debería sumar correctamente los dos números complejos y mostrar el resultado correcto.