使用C中的线程的矩阵中元素的总和

亚历山德拉

问题陈述如下所示:使用单独的线程来计算每一行的总和,计算二维矩阵中元素的总和主线程将这些和加起来打印出最终结果。

从目前为止我所看到的,代码可以正确运行。唯一的问题是,当我选择的行数小于列数时(例如,行= 2,列= 3),因为它只计算前两列的总和,而完全忽略了第三列。

这是我用C语言编写的代码,对于理解我做错了或错过的事情的任何帮助,我将不胜感激。谢谢你。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#define M 10
#define N 10

int rows, columns, a[M][N], s[M];

// compute the sum of each row

void* f(void* p) {
   int k = *((int*) p);
   int i;
   for (i = 0; i < columns; i++) {
      s[i] += a[k][i];
   }
   return NULL;
}

int main() {
    int i, j, *p, rc;
    int sum = 0;
    pthread_t th[M];

    // matrix creation
    printf("no. of rows = ");
    scanf("%d", &rows);
    printf("no. of columns = ");
    scanf("%d", &columns);

    for (i = 0; i < rows; i++) {
        for (j = 0; j < columns; j++) {
            printf("a[%d][%d] = \n", i, j);
            scanf("%d", &a[i][j]);
        }
    }

    printf("\nThe matrix is: \n");
    for(i=0; i < rows; i++) {
        for(j=0; j < columns; j++)
            printf("%d ", a[i][j]);
    printf("\n");
    }

    // thread creation
    for (i=0; i < rows; i++) {
        p = malloc(sizeof(int));
        *p = i;
        rc = pthread_create(&th[i], NULL, f, p);
        if (rc != 0) {
            printf("Thread creation failed");
            exit(-1);
        }
    }

    for (i=0; i < rows; i++) {
        pthread_join(th[i], NULL);
    }
    // compute the final sum
    for (i=0; i < rows; i++) {
        sum += s[i];
    }
    printf("The sum is = %d\n", sum);

    return 0;
    }
斯皮卡特里克斯

你需要

s[k] += a[k][i];

代替

s[i] += a[k][i];

各行的总和应在每个各指标加起来rows被声明为s[M]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenCV矩阵中元素的总和?

来自分类Dev

OpenCV矩阵中元素的总和?

来自分类Dev

矩阵幂中元素的总和

来自分类Dev

C 数组中元素的总和

来自分类Dev

在C中输入矩阵元素的总和

来自分类Dev

使用numpy的矩阵martix中的元素总和

来自分类Dev

矩阵中对角元素的总和

来自分类Dev

数组中元素的总和

来自分类Dev

流中元素的总和

来自分类Dev

数组中元素的总和

来自分类Dev

关联数组中元素的总和,不使用php中的循环

来自分类Dev

使用pyspark的文本文件中元素的总和

来自分类Dev

多维数组中元素的总和

来自分类Dev

矩阵C ++对角线元素的总和

来自分类Dev

NumPy-二维矩阵二次诊断中元素的总和

来自分类Dev

NumPy-二维矩阵二次诊断中元素的总和

来自分类Dev

如何从该矩阵生成的列表中获取矩阵中元素的索引?

来自分类Dev

为什么 scipy 稀疏矩阵内存使用量与矩阵中元素的数量无关?

来自分类Dev

列表中元素的总和在Jinja 2

来自分类Dev

比较数组中元素的总和:Ruby

来自分类Dev

您如何找到集合中元素的总和?

来自分类Dev

比较数组中元素的总和:Ruby

来自分类Dev

如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

来自分类Dev

如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

来自分类Dev

R中对角线之间的矩阵元素总和

来自分类Dev

APL查找矩阵中元素的频率

来自分类Dev

APL查找矩阵中元素的频率

来自分类Dev

计算矩阵中元素之间的路径数

来自分类Dev

矩阵中的列总和