使用结构的复数

Complex numbers using struct

我想写一个程序,读取复数数组,直到输入 0+0j 并计算这些数的绝对值并给出最大值。

  1. 我创建了一个包含 im 和 re 的结构。
  2. 我从用户那里获取数字并检查它是否等于 0+0j
  3. 我将输入数组发送到 absc 函数
  4. 在 absc 函数中,我创建了一个等于 sqrt(re^2+im^2) 的新数组,并将这个新数组发送到另一个函数 find_max
  5. 在find_max中我找到了绝对数组的最大值。
  6. 然后我打印最大值。

但是,我失败了,我不明白应该在哪里更正。

#include<stdio.h>
#include<math.h>
#define SIZE 5

struct stComplex
{
    int re, im; 
}; 

typedef struct stComplex Complex; 

float absc(float[]);
float find_max(float[]);

int main()
{
    Complex inputs[SIZE]; //Array for inputs

    int i;
    float max;

    for(i = 0; i < SIZE; i++
        printf("Enter real part of complex number: ");
        scanf("%d", &inputs[i].re);
        printf("Enter imaginary part of complex number: ");
        scanf("%d", &inputs[i].im);

        if(inputs[i].re != 0 and inputs[i].im != 0)
        {
            continue;
        }
        else
        {
            return 1;
        }   
    }

    max = absc(Complex inputs[SIZE]); //Sending the real and imaginary parts to calculate absolute value

    printf("The biggest absolute value is %f", max);

    return 0;
}

float absc(Complex x[SIZE]) 
{
    int i;
    float absolute[SIZE], max; 
    for(i = 0; i < SIZE; i++)
    {
        absolute[i] = sqrt(pow(inputs[i].re, 2) + pow(inputs[i].im, 2));
    }
    max = find_max(absolute[SIZE]); 

    return max; 
}

float find_max( float array[SIZE] )
{
    int i, max;
    max = array[0];
    for( i = 1; i < SIZE; i++ ) 
    {
        if( max < array[ i ] )
            max = array[ i ];
    }
    return max;
}
#include<stdio.h>
#include<math.h>
#define SIZE 5

struct stComplex
{
    int re, im; 
}; 

typedef struct stComplex Complex; 

float absc(Complex inputs[]);
float find_max(float[]);

int main()
{
    Complex inputs[SIZE]; //Array for inputs

    int i;
    float max;

    for(i = 0; i < SIZE; i++)
    {
        printf("Enter real part of complex number: ");
        scanf("%d", &inputs[i].re);
        printf("Enter imaginary part of complex number: ");
        scanf("%d", &inputs[i].im);

        if(inputs[i].re != 0 && inputs[i].im != 0)
        {
            continue;
        }
        else
        {
            return 1;
        }   
    }

    max = absc(inputs); //Sending the real and imaginary parts to calculate absolute value

    printf("The biggest absolute value is %f", max);

    return 0;
}

float absc(Complex inputs[SIZE]) 
{
    int i;
    float absolute[SIZE], max; 
    for(i = 0; i < SIZE; i++)
    {
        absolute[i] = sqrt(pow(inputs[i].re, 2) + pow(inputs[i].im, 2));
    }
    max = find_max(absolute); 

    return max; 
}

float find_max( float array[SIZE] )
{
    int i, max;
    max = array[0];
    for( i = 1; i < SIZE; i++ ) 
    {
        if( max < array[ i ] )
            max = array[ i ];
    }
    return max;
}