gpt4 book ai didi

c++ - 矩阵中的正行

转载 作者:行者123 更新时间:2023-11-28 03:34:25 25 4
gpt4 key购买 nike

我必须为大学做一个练习,要求我检查(k 次)矩阵是否有正行(我的意思是一行包含所有正元素),我认为 for 循环的索引有问题但是我找不到错误。

我尝试使用应用于计数器的 cout 语句进行调试,它给了我“101”,所以编译器似乎将“1”分配给正行,将“0”分配给负数

这是我写的代码:

#include <iostream>

using namespace std;

const int N = 3;

bool positive(int a[N][N], int row[N], int x) {
bool condition = false;

for(int i = 0; i < N; i++) {
row[i] = a[x][i];
}

int j = 0;

while(j < N) {
if(row[j] >= 0) {
condition = true;
} else {
condition = false;
}

j++;

}

return condition;
}


bool function (int a[N][N], int z, int j, int k) {
int b[N];
int c[N];
int count = 0;

if(positive(a, b, z) && positive(a, c, j)) {
count++;
}

if(count == k) {
return true;
} else {
return false;
}
}


int main() {
int a[N][N] = {
{
2, 8, 6
}, {
-1, - 3, - 5
}, {
6, 10, 9
}
};

int k = 2;

for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(function (a, i, j, k)) {
cout << "OK";
} else {
cout << "NO";
}

}
}

return 0;
}

最佳答案

您可能应该重新审视这个问题并使用不同的解决方案重新开始。目标很简单,但您的代码出奇地复杂,其中一些代码并没有真正意义。

例如,如果您有这样的矩阵:

    1   2   4    --> matrix A
-1 8 -6
3 9 2

您有 N=3 行和列。根据您所说的,您唯一需要做的就是获取矩阵,循环遍历 N 行,然后对于每一行,检查它的 N 列以查看是否有任何内容 < 0。

如您所说,执行此 K 次没有任何意义。每次比较时矩阵都是相同的,因为您没有更改它,为什么要多次进行比较?我认为你应该重读那里的作业简介。

至于查找哪些行是正数或负数的逻辑,就这么简单。

//Create array so we have one marker for each row to hold results.
bool rowPositiveFlags[N] = { true, true, true };

//Cycle through each row.
for (int row = 0; row < N; ++row)
//Cycle through every column in the current row.
for (int col = 0; col < N; ++col)
//If the column is negative, set the result for this row to false and break
//the column for loop as we don't need to check any more columns for this row.
if (A[row][col] < 0) {
rowPositiveFlags[row] = false;
break;
}

您应该始终为事物命名,以便您可以像阅读书本一样阅读您的代码。你的 i、j 和 k 只会让一些简单的事情变得困惑。至于问题,只需计划您的解决方案即可。

在纸上手工解决问题,在代码的注释中写下步骤,然后在注释下方编写代码,这样您所做的事情绝对有意义并且不会矫枉过正。


这是一个很棒的网站,但下一次,发布一小段代码来说明您的问题。人们不应该在这里给你一个完整的家庭作业解决方案,所以不要寻找一个。只需找到索引损坏的位置并粘贴那组 5 行或其他错误的地方。人们对此表示赞赏,您会因展示自己的努力而获得更快、更好的答案:)

关于c++ - 矩阵中的正行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494068/

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