gpt4 book ai didi

使用c中的结构进行复杂 vector 加法

转载 作者:行者123 更新时间:2023-11-30 14:22:41 29 4
gpt4 key购买 nike

我正在尝试使用 C 中的结构为一个项目进行复杂的 vector 加法和点积。我已经编写了代码,但是,虽然它的编译没有问题,但一旦我运行我的程序,它就会停止工作。我还有该程序的其他部分,但这只是相关部分。我还尝试用复数进行矩阵加法和乘法。我想如果我能让这些工作正常的话我可以修改其他的。任何帮助将不胜感激。谢谢,我很感激。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.14159265359

typedef struct complex
{
double re;
double im;
}complex;

typedef struct vect_complex
{
double *re;
double *im;
}vect_complex;

typedef struct mat_complex
{
//int i=0,j=0;
double re[100][100];
double im[100][100];
}mat_complex;

void vector_add(vect_complex a[4], vect_complex b[4], vect_complex c[4])
{
int i;
for(i=0; i<3 ;i++);
{
c->re[i] = a->re[i] + b->re[i];
c->im[i] = a->im[i] + b->im[i];
}
printf("Vector addition = (%f + %f*j)i + (%f +%f*j)j + (%f + %f*j)k\n\n",c- >re[0],c->im[0],c->re[1],c->im[1],c->re[2],c->im[2]);
}

void addmx(mat_complex *a, mat_complex *b, mat_complex *c)
{
int i, j;
for ( i = 0 ; i < '\0' ; i++ )
{
for ( j = 0 ; j < '\0' ; j++ )
{
c->re[i][j] = a->re[i][j] + b->re[i][j];
c->im[i][j] = a->im[i][j] + b->im[i][j];
}
}
printf("***Matrix Addition***\n");
for ( i = 0 ; i < '\0' ; i++ )
{
for ( j = 0 ; j < '\0' ; j++ )
{
printf("(%f + %f*j) ", c->re[i][j],c->im[i][j]);
}
printf("\n");
}
}

int main()
{
vect_complex aaa;
vect_complex bbb;
*aaa.re = 5;
*aaa.im = 4;
*bbb.re = 3;
*bbb.im = 2;
vect_complex ccc;

vector_add(&aaa, &bbb, &ccc);
vector_dot_prod(&aaa, &bbb, &ccc);

return 0;
}

最佳答案

这里有很多问题需要处理。

1。 vector 复合体

也许您希望您的 vect_complex 保存固定数量的元素,在这种情况下应该定义它:

typedef struct vect_complex
{
double re[3];
double im[3];
} vect_complex;

或者,您可以保留当前的定义,但每次使用该结构时都需要分配新的数组:

int main(void)
{
vect_complex vc;

vc.re = (double *) malloc(3 * sizeof(double));
vc.im = (double *) malloc(3 * sizeof(double));

vc.re[0] = 1.0;
vc.im[0] = 2.0;
...
}

2。 vector 添加

此函数应该将对 vect_complex 的引用作为输入,而不是复 vector 数组。此实现假定我上面给出的 vect_complex 的定义。

void vector_add(vect_complex * a, vect_complex * b, vect_complex * result)
{
int i;
for (i = 0; i < 3; i++)
{
result->re[i] = a->re[i] + b->re[i];
result->im[i] = a->im[i] + b->im[i];
}
}

3。添加MX

我不确定 '\0' 在这里做什么。将其更改为

for (i = 0; i < 100; i++)
for (j = 0; j < 100; j++)
{
...
}

关于使用c中的结构进行复杂 vector 加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com