我正在嘗試撰寫一個程式來在初始化的 5x5 矩陣的列中找到最大值,并將其更改為 -1。我找到了這樣做的方法,但我想找到更好的解決方案。
輸入:
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 次,然后得到結果,但我想要一個更好的解決方案。謝謝。
uj5u.com熱心網友回復:
我是用java寫的,但我想你能理解。這是同時用于所有 5 列的。你可以試試這個:
int count = 0;
double max = 0;
for (int i = 0; i < 5; i) {
for (int j = 0; j < 5; j) {
if (j == 0) {
max = array2d[j][I];
count = 0;
}
if (array2d[j][i] > max) {
count = j;
}
}
array2d[count][i] = -1;
}
uj5u.com熱心網友回復:
下面是使用指標演算法的完整程式。該程式根據需要替換二維陣列 -1 的每一列中的所有最大值。
#include <iostream>
int main()
{
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;
}
}
}
//these(from this point on) are the things that i have added.
//Everything above this comment is the same as your code.
double (*rowBegin)[5] = std::begin(array2d);
double (*rowEnd)[5] = std::end(array2d);
while(rowBegin != rowEnd)
{
double *colBegin = std::begin(rowBegin[0]);
double *colEnd = std::end(rowBegin[0]);
double lowestvalue = *colBegin;//for comparing elements
double *pointerToMaxValue = colBegin;
while(colBegin!= colEnd)
{
if(*colBegin > lowestvalue)
{
lowestvalue = *colBegin;
pointerToMaxValue = colBegin ;
}
colBegin = colBegin 1;
}
double *newcolBegin = std::begin(rowBegin[0]);
double *newcolEnd = std::end(rowBegin[0]);
while(newcolBegin!=newcolEnd)
{
if(*newcolBegin == lowestvalue)
{
*newcolBegin = -1;
}
newcolBegin;
}
rowBegin;
}
return 0;
}
該程式可以在這里檢查。
您可以添加列印出陣列的所有元素來檢查上述程式是否將每列中的所有最大值都替換為-1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329603.html
上一篇:未檢測到溫度檔案的變化
