10欧求一道C语言题代码,不是C++!急!!!

本帖最后由 lsm0917 于 2009-3-12 22:42 编辑

Schreiben Sie ein Programm, welches eine Matrix-Vektor-Multiplikation Ax realisert. Das Programm
soll dynamisch angeforderten Speicher verwenden und f¨ur die Matrix und den Vektor nur
ganzzahlige Werte vorsehen. Mehrdimensionale Arrays wie Matrizen sind in C als Arrays von
Zeigern auf Zeiger realisiert. Verwenden Sie zur Anforderung des Speichers den folgenden Programmcode:
void init_matrix(int* n, int*** feld, int** vektor)
{
int i;
*feld=(int**)malloc((*n)*sizeof(int*));
for(i=0;i<*n;i++) (*feld) [ i ] =(int*)malloc((*n)*sizeof(int));
*vektor=(int*)malloc((*n)*sizeof(int));
}

Das Programm soll folgendes Men¨u anbieten und die entsprechenden Funktionen realisieren:
0: Problemgroesse N setzen
1: Matrix generieren
2: Vektor generieren
3: Matrix/Vektor ausgeben
4: Ende
Die Werte der Matrix und des Vektors sollen zuf¨allig generiert werden.

Erweitern Sie das Programm um die Berechnung des Matrix-Vektor-Produkts. Dabei soll auch das
Ergebnis der Multiplikation ausgegeben werden.
Share |
Share

ls那个东西应该不是错误,两种写法都可以
下面的程序也没问题
C语言就是这个时候 让人看了头疼 满眼都是******
jiefei 发表于 2009-3-13 11:03


lz已经改正了,所以你认为都是正确的,嘿嘿

原来的是
for(i=0;i<*n;i++) (**feld)=(int*)malloc((*n)*sizeof(int));

所以我运行起来老是 Segment fault ,结果仔细一看,lz写错了,呵呵
也许我永远到不了彩虹天堂,但那会是我最真实的梦!

TOP

ls那个东西应该不是错误,两种写法都可以
下面的程序也没问题
C语言就是这个时候 让人看了头疼 满眼都是******

TOP

本帖最后由 sagood 于 2009-3-12 22:47 编辑

其实就是要考察你对指针的掌握和矩阵乘法,呵呵,另外好像在给出的函数里面有错误

for(i=0;i<*n;i++) (*(*feld + i))=(int*)malloc((*n)*sizeof(int));

乘法运算规则就是:

for (i = 0; i < *n; i++)
{
    for (j = 0; j < *n; j++)
    {
       *(result+i) += *(*(feld+i)+j) * (*(vektor+j));
    }
}
也许我永远到不了彩虹天堂,但那会是我最真实的梦!

TOP