gpt4 book ai didi

c - 我将如何确保这两个矩阵具有非零、正的行和列值?

转载 作者:行者123 更新时间:2023-11-30 15:58:46 25 4
gpt4 key购买 nike

我在设置代码时没有考虑到需要检测这一事实,因此我现在似乎不知道如何实现它。这是一个简单的矩阵乘法器。

基本上,它需要检测两个条件。

  1. 如果矩阵 1 中的列不等于矩阵 2 中的行,则退出程序并显示错误消息。我已经做到了。

  2. 如果用户为矩阵 1 和矩阵 2 的行值和列值输入的值是非零正值。我在这方面遇到了麻烦。

我们的教授设置它的方式是,我们复制并粘贴一组值,然后它就会执行此操作。但是,如果我们将其复制并粘贴到输入中,我很困惑它应该如何检测行和列的错误,以便接受我使用 for 循环扫描中的所有值的其余数据,for 循环的长度取决于矩阵 1 和矩阵 2 的行和列的输入。如果这些值为负,则 for 循环无论如何都不会工作。

真的,任何帮助将不胜感激,除了这个微小的细节之外,我已经完成了所有其他部分。非常感谢。

#include <stdio.h>

int main(int argc, char *argv[]) {
int rows1 = 1, columns1 = 1, rows2 = 1, columns2 = 1; // variables for number of rows and columns in each matrix
int i, j, k; // loop variables

// These will affect the loop's length
scanf("%d %d", &rows1, &columns1);
int matrix1[rows1][columns1];
for (i = 0; i < rows1; i++) {
for (j = 0; j < columns1; j++) {
scanf("%d", &matrix1[i][j]);
}
}

scanf("%d %d", &rows2, &columns2);
int matrix2[rows2][columns2];
for (i = 0; i < rows2; i++) {
for (j = 0; j < columns2; j++) {
scanf("%d", &matrix2[i][j]);
}
}

int resultMatrix[rows1][columns2]; // Initialization of resultMatrix, that holds the result of the multiplication

int matrix1RowIndex = 0, matrix1ColIndex = 0, matrix2ColIndex = 0;

if (columns1 != rows2) {
printf("Sorry, the amount of columns in the first matrix must equal the amount of rows in the second matrix.\n");
}
else {
// Loop to set the values of resultMatrix's indices
for (i = 0; i < rows1; i++) { // rows
for (j = 0; j < columns2; j++) { // columns
resultMatrix[i][j] = 0;
for (k = 0; k < columns1; k++) { // for each individual index to be summed for the resultMatrix's value
resultMatrix[i][j] += (matrix1[matrix1RowIndex][matrix1ColIndex + k] * matrix2[matrix1ColIndex + k][matrix2ColIndex]);
}
matrix2ColIndex++;
}
matrix1RowIndex++;
matrix2ColIndex = 0;
}

//prints resultMatrix
for (i = 0; i < rows1; i++) { // rows
for (j = 0; j < columns2; j++) { // columns
printf("%6d", resultMatrix[i][j]);
}
printf("\n");
}
}
}

最佳答案

您似乎可以使用 if 语句检查相关值是否大于零,不是吗?

关于c - 我将如何确保这两个矩阵具有非零、正的行和列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521166/

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