它构建矩阵的每个数字[i] [j],并在每个数字之后通过将数字[i] [j]与之前的数字[k] [l]进行比较来检查。
起初它因为没有数字而通过。
真正的目标是制作一个包含所有不同数字的矩阵。 我正在尝试重新开始检查矩阵的数量,以便在遇到任何相同的情况时它将重新开始检查。
(如果有任何相同的话,它会改变数字。更改后,更改的数字也可以与矩阵开头的任何人相同,所以我想在任何更改时再次检查)
int matris[10][10];
int counter = 0;
bool control = true;
for (int i = 0; i<10; i++) {
for (int j = 0; j<10; j++) {
matris[i][j] = rand() % 99;
do {
for (int k = 0; k <= i; k++) {
for (int l = 0; l <= j; l++) {
if (matris[i][j] == matris[k][l])
{
matris[i][j] = rand() % 99;
counter++;
if(k==i&&l==j)break;
control = false;
}
else control=true;
}
}
} while (control == false);
}
}
如果它写的值是99-0或100-1并不重要。我的老师问我们100-1之间的数字。
真正的问题是它无法控制回来。它有时给出相同的数字。它不应该。
counter =数字改变了多少次。
这里结果..
计数器:124 矩阵: 54 68 83 55 12 30 97 96 63 91 52 55 8 6 96 46 55 14 65 93 52 94 39 6 92 40 12 86 66 61 11 33 77 46 97 6 16 28 28 46 17 72 16 75 93 81 61 82 34 19 93 72 96 34 48 49 29 54 81 94 72 27 13 8 22 52 12 96 35 66 87 84 79 10 52 24 45 49 82 48 32 64 34 32 82 85 70 72 97 55 44 93 9 86 10 4 33 25 32 99
你可以看到是否有相同的数字,它排名。 99 97 97 97 96 96 96 96 94 94 93 93 93 93 92 91 87 86 86 85 84 83 82 82 82 81 81 79 77 75 72 72 72 72 70 68 66 66 65 64 63 61 61 55 55 55 55 54 54 52 52 52 52 49 49 48 48 46 46 46 45 44 40 39 35 34 34 34 33 33 32 32 32 30 29 28 28 27 25 24 22 19 17 16 16 14 13 12 12 12 11 10 10 9 8 8 6 6 6 4 按任意键继续 。 。
答案 0 :(得分:0)
实际上do-while效果很好,但在其中你正在使用(int k = 0; k < i; k++)
,它会迭代到i-1
并说如果你将第6个元素放在矩阵中,你只需要检查第5个元素,跳过第6个。您可以尝试(int k = 0; k < i+1; k++)
。
另一种方法是,如果你想让你的矩阵中的所有数字0-99先放入它们然后通过随机交换位置来扰乱矩阵......这应该可以解决问题。
#include <iostream>
using namespace std;
int main() {
int matris[10][10];
int sayac = 0;
// put all of them in first
for (int i = 0; i<10; i++) {
for (int j = 0; j<10; j++) {
matris[i][j] = sayac;
sayac++;
}
}
// then scramble
for (int i = 0; i<10; i++) {
for (int j = 0; j<10; j++) {
int tmp,k ,l;
k = rand()%9;
l = rand()%9;
tmp = matris[i][j];
matris[i][j] = matris[k][l];
matris[k][l] = tmp;
}
}
// check the result
for (int i = 0; i<10; i++) {
for (int j = 0; j < 10; j++) {
cout << matris[i][j] << "\t";
}
cout << endl;
}
return 0;
}
每次需要将rand()
函数与通常为系统时钟的种子一起使用时,可以看到不同的结果。