Как я могу рассчитать модуль комплексного числа - PullRequest
0 голосов
/ 04 февраля 2020
#include <stdio.h>
#include <math.h>

typedef struct complex {
    int real, imag;
}complex;


int main ()
{
    int n;
    complex *z;
    scanf("%d", &n);

    for (int i=0 ; i<n ; i++)
    {
        scanf("%d %d", &z[i].real, &z[i].imag);
    }

    for( int i = 0; i < n; i++)
    {
        int *d;
        d[i]==sqrt((z[i].real*z[i].real)+(z[i].imag*z[i].imag));
        printf("%d\n", d[i]);
    }

    return 0;
}

Я хочу вычислить модуль ввода n комплексных чисел, но я не знаю, как сделать структуру и все остальное, что этот код дает мне случайное значение при компиляции.

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Сейчас вы пытаетесь записать несколько чисел в комплекс *z, как если бы это был массив. Это только указатель на одну сложную структуру. Попробуйте создать массив комплексного размера n, если вы хотите иметь несколько комплексных чисел. То же самое для int *d.

. Мое предложение состояло бы в том, чтобы сначала он работал для одного комплексного числа, потому что даже без проблемы с массивом вы назначаете переменную с ==.

0 голосов
/ 05 февраля 2020
#include <stdio.h>
#include <math.h>

struct Complex {
    int real, imag;
};

int main ()
{
    int n;
    scanf("%d", &n);
    struct Complex z[n];

    for (int i=0 ; i<n ; i++)
    {
        scanf("%d %d", &z[i].real, &z[i].imag);
    }

    double d[n];
    for( int i = 0; i < n; i++)
    {
        d[i] = sqrt((z[i].real*z[i].real)+(z[i].imag*z[i].imag));
        printf("%f\n", d[i]);
    }

    return 0;
}

Обратите внимание:

  • d [] должно быть переменной двойного типа.
  • Поскольку вы уже знаете количество входов, вы можете объявить массив типа Complex.
  • Избегайте использования ключевого слова в качестве имени переменной или структуры. Вы использовали ключевое слово "complex" в качестве имени структуры.
...