我有一個小問題,我不太明白如何在 C 中制作有齒(有缺口?)矩陣。矩陣應該是這樣的(有 4 列和 6 行):

但是我一直得到一個三角形形式的矩陣,即不顯示重復的行。我該如何解決?我附上了一段代碼,但我認為它不會有太大幫助。
(N 是行,M 是列)
for (int i = 0; i < N; i ) {
matrix[i] = new double[M];
for (int p = 0; p <= i; p ) {
matrix[i][p] = rand() % 101 - 50;
cout << setw(5) << matrix[i][p];
}
uj5u.com熱心網友回復:
我假設第一行有 1 列,第二行有 2 列,依此類推,最多為 M 列。在這種情況下,以下將起作用。
size_t N = 6;
size_t M = 4;
double **matrix = new double*[N];
for (size_t i = 0; i < N; i ) {
size_t cols = std::min( i 1, M ); // determine the correct number of cols for the row
matrix[i] = new double[cols];
for (size_t p = 0; p < cols; p ) {
matrix[i][p] = rand() % 101 - 50;
cout << setw(5) << matrix[i][p];
}
}
順便說一句,我建議使用比rand().
通常也建議不要使用new,而是更喜歡std::unique_ptr或std::shared_ptr,或者在這種情況下使用std::vector. 也不要忘記delete。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383228.html
上一篇:Numpy意味著無法獲得其他軸
下一篇:回圈遍歷陣列并將值增加到新陣列中
