c++的習題寫不出來
寫一個程式來輸入二維陣列(大小為3*4)之各個元素的數值(浮點),最後找出各行及各列的最大值, 將此表印出如下所示
Col 1 Col 2 Col 3 Col 4 Max.
Row 1 10.20 13.30 24.56 34.43 34.43
Row 2 23.40 13.24 33.32 44.54 44.54
Row 3 45.30 23.45 33.32 46.32 46.32
Max. 45.30 23.45 33.32 46.32 46.32
1 個解答
- 2 0 年前最佳解答
float array[4][5];
int i, j;
array[3][4]的各值以題目給的為例;
使各行列的最大值初始化
array[3][0] = array[0][0]; // 10.20
array[3][1] = array[0][1]; // 13.30
array[3][2]= array[0][2]; // 24.56
array[3][3]= array[0][3]; // 34.43
array[0][4]= array[0][0]; // 10.20
array[1][4]= array[1][0]; // 23.40
array[2][4]= array[2][0]; // 45.30
---------列----------
for (i = 1; i < 4; i++) // 從第二個開始比
if (array[0][i] > array[0][4])
array[0][4] = array[0][i];
for (i = 1; i < 4; i++) // 從第二個開始比
if (array[1][i] > array[1][4])
array[1][4] = array[1][i];
for (i = 1; i < 4; i++) // 從第二個開始比
if (array[2][i] > array[2][4])
array[2][4] = array[2][i];
---------行----------
for (i = 1; i < 4; i++) // 從第二個開始比
if (array[i][0] > array[3][0])
array[3][0] = array[i][0];
for (i = 1; i < 3; i++) // 從第二個開始比
if (array[i][1] > array[3][1])
array[3][1] = array[i][1];
for (i = 1; i < 3; i++) // 從第二個開始比
if (array[i][2] > array[3][2])
array[3][2] = array[i][2];
for (i = 1; i < 3; i++) // 從第二個開始比
if (array[i][3] > array[3][3])
array[3][3] = array[i][3];
array[3][4]= array[3][0]; // 45.30
for (i = 1; i < 4; i++) // 找出各行最大值中的最大值
if (array[3][i] > array[3][4])
array[3][4] = array[i][3];
for (i = 1; i < 3; i++) // 找出各列最大值中的最大值
if (array[i][3] > array[3][4])
array[3][4] = array[i][3];
最後印出結果
for (j = 0; j < 4; j++)
{
for (i = 0; i < 5; i++)
printf (".2%f", array[j][i]);
printf ("\n");
}
這不是最聰明的方法, 但是很容易懂 ^^
2006-04-12 20:25:20 補充:
最後的printf (".2%f", array[j][i]);要改成printf (" .2%f", array[j][i]);空一些SPACE ^^並在最後兩個 for 之中加上if (j == 3)printf ("MAX");else printf ("ROW %d", j); 醬就行了
2006-04-12 20:29:14 補充:
忘了你要用C++ ^^"不過只要把printf 寫成 cout的形式就行了這個你應該會就不多說了不懂可以再問 : )