文章目录

Question

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的上方区域元素的平均值或元素的和。

数组的两条对角线将数组分为了上下左右四个部分,如下图所示,黄色部分为对角线,绿色部分为上方区域:

749. 数组的上方区域_c++

输入格式
第一行输入一个大写字母,若为 S,则表示需要求出上方区域的元素的和,若为 M,则表示需要求出上方区域的元素的平均值。

接下来 12 行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素 M[i][j]。

输出格式
输出一个数,表示所求的平均数或和的值,保留一位小数。

输出结果与标准答案据对误差不超过 0.1 即视为正确。

数据范围
−100.0≤M[i][j]≤100.0
输入样例:
S
-4.8 -8.0 -2.9 6.7 -7.0 2.6 6.5 1.7 1.9 5.6 -1.6 -6.3
-4.3 1.5 8.7 -0.3 5.4 -9.3 4.8 7.0 3.6 -8.3 -1.0 1.3
-9.9 9.7 -6.3 5.8 2.9 2.9 -7.7 4.9 -0.6 7.2 6.4 7.7
2.8 -5.8 -0.0 2.2 4.0 7.7 -3.0 -7.5 -3.5 9.7 -4.3 -8.6
-1.8 -0.1 5.4 0.6 9.9 -3.7 -1.1 0.8 -0.2 -0.0 9.9 4.5
3.0 -3.9 2.1 -9.7 5.5 9.4 -4.6 3.3 -9.6 5.1 -4.5 1.5
4.3 -5.4 -7.9 9.2 -7.7 -9.6 -1.5 -1.6 -7.2 2.0 -3.7 -0.7
8.0 2.8 -4.1 7.1 8.4 -5.6 3.9 -9.7 -1.1 3.0 -8.5 -3.3
1.7 5.1 0.1 9.2 4.5 9.7 7.2 8.6 8.7 1.1 6.7 0.3
-3.6 -7.1 -8.9 7.1 -5.9 1.6 -7.4 6.7 3.9 4.3 -2.4 -3.7
8.9 -6.2 5.0 -8.6 -1.3 -8.8 2.6 8.9 5.5 9.0 -2.2 -4.4
5.7 3.7 1.8 -2.1 -7.3 -7.9 4.7 6.0 3.3 -2.8 1.4 -6.9
输出样例:
21.7

Ideas

Code

#include <iostream>
#include <cstdio>
#define N 12

using namespace std;

int main()
{
char c;
cin >> c;
float M[N][N];
float s = 0.0;
int n = 0;


for(int i = 0; i < N; i ++)
{
for(int j = 0; j < N; j ++)
{

cin >> M[i][j];
}
}

for (int i = 0; i < N; i ++)
{
if (i >= 5) break;

for (int m = i + 1; m <= 10 - i; m ++)
{
s += M[i][m];
n ++;
}


}

if (c == 'S')
printf("%.1f", s);
else
printf("%.1f",(s + 1e-6) / n);


return 0;
}