基于C++中每一行的总和对2D阵列进行排序
Order 2D Arrays based on a sum of each row in C++
这些问题几乎概括了这一点。到目前为止,我拥有的是:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int sum1;
int sum2;
int sum3;
int sum4;
int sum5;
int sum6;
int sum7;
int sum8;
int a[8][7] = {
{ 2, 4, 3, 4, 5, 8, 8 } ,
{ 7, 3, 4, 3, 3, 4, 4 } ,
{ 3, 3, 4, 3, 3, 2, 2 } ,
{ 9, 3, 4, 7, 3, 4, 1 } ,
{ 3, 5, 4, 3, 6, 3, 8 } ,
{ 3, 4, 4, 6, 3, 4, 4 } ,
{ 3, 7, 4, 8, 3, 8, 4 } ,
{ 6, 3, 5, 9, 2, 7, 9 }
};
for(int i = 0; i < 8; i++) {
}
}
我计划将sum1到sum8的每个值的总和分配给一行,然后按其总和对每行进行排序,并将其显示给用户。
然而,我一直被卡住,找不到任何好的文档。有人能帮我写一个有效的函数吗?我可以在for循环中循环,把每一行加成一个和,然后返回和并对所有行求平均值?(这可能需要不止一个函数,但……不管怎样。)
如果您希望每行的总和以升序显示,下面的代码将执行此操作。。。
// #include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
int sums[8] = {0};
int a[8][7] = {
{ 2, 4, 3, 4, 5, 8, 8 } ,
{ 7, 3, 4, 3, 3, 4, 4 } ,
{ 3, 3, 4, 3, 3, 2, 2 } ,
{ 9, 3, 4, 7, 3, 4, 1 } ,
{ 3, 5, 4, 3, 6, 3, 8 } ,
{ 3, 4, 4, 6, 3, 4, 4 } ,
{ 3, 7, 4, 8, 3, 8, 4 } ,
{ 6, 3, 5, 9, 2, 7, 9 }
};
// calculate the sums
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 7; j++) {
sums[i] += a[i][j];
}
}
sort(begin(sums), end(sums)); // sort the sums
copy(begin(sums), end(sums), ostream_iterator<int>(cout, " ")); // display the sums
return 0;
}
我觉得你是个很酷的程序员。你不寻求简单的方法。
当然,你可以使用一个求和数组,但这似乎太容易了。
那么,试试下面的
#include <iostream>
#include <numeric>
int main()
{
int sum1;
int sum2;
int sum3;
int sum4;
int sum5;
int sum6;
int sum7;
int sum8;
int a[8][7] = {
{ 2, 4, 3, 4, 5, 8, 8 } ,
{ 7, 3, 4, 3, 3, 4, 4 } ,
{ 3, 3, 4, 3, 3, 2, 2 } ,
{ 9, 3, 4, 7, 3, 4, 1 } ,
{ 3, 5, 4, 3, 6, 3, 8 } ,
{ 3, 4, 4, 6, 3, 4, 4 } ,
{ 3, 7, 4, 8, 3, 8, 4 } ,
{ 6, 3, 5, 9, 2, 7, 9 }
};
size_t i = 0;
for ( auto p : { &sum1, &sum2, &sum3, &sum4, &sum5, &sum6, &sum7, &sum8 } )
{
*p = std::accumulate( a[i], a[i] + 7, 0 );
++i;
}
for ( int x : { sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8 } ) std::cout << x << std::endl;
}
输出为
34
28
20
31
32
28
37
41
有了这些总和,你可以找到任何平均值。我希望你自己做这件事。
相关文章:
- 根据组件 1、2(和 3)对空间 (2D/3D) 向量进行排序
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 通过 std::sort 对 C 2D 数组进行排序
- 如何在不通过插入排序更改原始矢量的情况下对 2D 矢量进行排序
- 如何搜索和排序 2D 数组
- 气泡排序 2D 数组
- 2d 排序卡算法
- 2D数组排序,空格打乱顺序
- 2D 矢量排序算法
- 对通过引用传递的 2d 向量进行排序
- C 2D数组排序
- 我们如何在 c++ 中使用 std::sort 对 2D 字符串数组进行排序
- 按一行对2D数组进行排序
- 2D 字符串数组气泡排序
- 如何对主对角线上方的 2D 数组中的元素进行排序
- 仅使用 iostream 按字母顺序对 2d 数组进行气泡排序
- 根据某一行对整个 2D 向量进行排序
- C++:对2D数组进行基于1行的排序
- 根据关系的 2D 数组对数组进行排序(更高、更低、无关紧要)
- 在 2D z 排序渲染系统中组合点(粒子)和三角形(精灵)