用于查找列总和的二维数组,显示不正确
2D array to find sum of columns, doesn't display properly
#include <iostream>
#include <iomanip>
using namespace std;
void table(int i[], int j[]);
int m[4][5] = {
{2,5,4,7},
{3,1,2,9},
{4,6,3,0},
};
int main()
{
table({}, {});
}
void table(int i[], int j[]) {
for (int k = 0; k < 5; k++) {
int sum = 0;
for (int l = 0; l < 4; l++) {
sum += m[l][k];
}
cout << "column: " << " " << sum << '\n';
}
}
基本上我希望它显示如下:
Column Sum of Column Entries
1 9
2 12
3 9
4 16
而且我不确定该怎么做。我写一个循环吗?
从 table
中删除参数。将 i
和 j
作为指针传递(int i[]
只是 int* i
参数的一种混淆方式)然后不在函数中使用它们是没有意义的。相反,您应该传递一个指向数组的指针,而不是使用全局变量。虽然一次做一件事...
如果你想让一个header出现在其余输出之前,那么你需要在其余输出之前打印一个header:
void table() {
std::cout << "column\tsum\n";
for (int k = 0; k < 5; k++) {
int sum = 0;
for (int l = 0; l < 4; l++) {
sum += m[l][k];
}
cout << k << "\t" << sum << '\n';
}
}
提供的代码没有意义。
对于初学者来说,函数 table 的参数没有被使用。此外,在此调用后它们被初始化为空指针
table({}, {});
数组 m
也被声明为 4 行和 5 列。这意味着最后一行包含所有零,最后一列也包含零。
你的意思好像是三行四列的数组。
程序可以这样看
#include <iostream>
$include <iomanip>
const size_t COLS = 4;
void table( const int a[][COLS], size_t rows );
int main()
{
int m[][COLS] =
{
{ 2, 5, 4, 7 },
{ 3, 1, 2, 9 },
{ 4, 6, 3, 0 },
};
table( m, sizeof( m ) / sizeof( *m ) );
}
void table( const int a[][COLS], size_t rows )
{
std::cout << "Column Sum of Column Entries\n";
for (size_t j = 0; j < COLS; j++)
{
int sum = 0;
for (size_t i = 0; i < rows; i++)
{
sum += a[i][j];
}
std::cout << j + 1 << ":" << std::setw( 14 ) << ' ' << sum << '\n';
}
std::cout << '\n';
}
程序输出为
Column Sum of Column Entries
1: 9
2: 12
3: 9
4: 16
#include <iostream>
#include <iomanip>
using namespace std;
void table(int i[], int j[]);
int m[4][5] = {
{2,5,4,7},
{3,1,2,9},
{4,6,3,0},
};
int main()
{
table({}, {});
}
void table(int i[], int j[]) {
for (int k = 0; k < 5; k++) {
int sum = 0;
for (int l = 0; l < 4; l++) {
sum += m[l][k];
}
cout << "column: " << " " << sum << '\n';
}
}
基本上我希望它显示如下:
Column Sum of Column Entries
1 9
2 12
3 9
4 16
而且我不确定该怎么做。我写一个循环吗?
从 table
中删除参数。将 i
和 j
作为指针传递(int i[]
只是 int* i
参数的一种混淆方式)然后不在函数中使用它们是没有意义的。相反,您应该传递一个指向数组的指针,而不是使用全局变量。虽然一次做一件事...
如果你想让一个header出现在其余输出之前,那么你需要在其余输出之前打印一个header:
void table() {
std::cout << "column\tsum\n";
for (int k = 0; k < 5; k++) {
int sum = 0;
for (int l = 0; l < 4; l++) {
sum += m[l][k];
}
cout << k << "\t" << sum << '\n';
}
}
提供的代码没有意义。
对于初学者来说,函数 table 的参数没有被使用。此外,在此调用后它们被初始化为空指针
table({}, {});
数组 m
也被声明为 4 行和 5 列。这意味着最后一行包含所有零,最后一列也包含零。
你的意思好像是三行四列的数组。
程序可以这样看
#include <iostream>
$include <iomanip>
const size_t COLS = 4;
void table( const int a[][COLS], size_t rows );
int main()
{
int m[][COLS] =
{
{ 2, 5, 4, 7 },
{ 3, 1, 2, 9 },
{ 4, 6, 3, 0 },
};
table( m, sizeof( m ) / sizeof( *m ) );
}
void table( const int a[][COLS], size_t rows )
{
std::cout << "Column Sum of Column Entries\n";
for (size_t j = 0; j < COLS; j++)
{
int sum = 0;
for (size_t i = 0; i < rows; i++)
{
sum += a[i][j];
}
std::cout << j + 1 << ":" << std::setw( 14 ) << ' ' << sum << '\n';
}
std::cout << '\n';
}
程序输出为
Column Sum of Column Entries
1: 9
2: 12
3: 9
4: 16