es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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>

Tags:  ,

Answer

  1. Avatar for 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:

    complex result(complex n1, complex n2) {
        complex res;
        res.real = n1.real + n2.real;
        res.imag = n1.imag + n2.imag;
        return res;
    }
    

    Con esta modificación, el código debería sumar correctamente los dos números complejos y mostrar el resultado correcto.

Comments are closed.