我正試圖編寫一個程序,在初始化的5x5矩陣的列中找到一個最大值,并將其更改為-1。我找到了辦法,但我想找到更好的解決辦法。
Input:
double array2d[5][5];
double *ptr;
ptr = array2d[0];
// initializing matrix
for (int i = 0; i < 5; ++i) {
for (int j = 0; j < 5; ++j) {
if (j % 2 != 0) {
array2d[i][j] = (i + 1) - 2.5;
} else {
array2d[i][j] = 2 * (i + 1) + 0.5;
}
}
}
這是我對第一列的解決方案:
// Changing the matrix using pointer arithmetic
for (int i = 0; i < (sizeof(array2d) / sizeof(array2d[0][0])); ++i) {
if (i % 5 == 0) {
if (maxTemp <= *(ptr + i)) {
maxTemp = *(ptr + i);
}
}
}
for (int i = 0; i < (sizeof(array2d) / sizeof(array2d[0][0])); ++i) {
if (i % 5 == 0) {
if (*(ptr + i) == maxTemp) {
*(ptr + i) = -1;
}
}
}
我可以重復這個代碼5次,并得到結果,但我想要一個更好的解決方案。謝謝。
下面是使用指針算法的完整程序。此程序將根據需要替換2D數組-1中每列中的所有最大值。
程序可以在這里檢查。
您可以添加打印輸出數組的所有元素,以檢查上述程序是否將每列中的所有最大值替換為-1。