从数组中添加值并插入空间

Add value from array and insert space

本文关键字:插入 空间 添加 数组      更新时间:2023-10-16

我有一个2D整数数组,如主函数所示。该程序需要提示用户进行单个整数。然后,我必须使用" AddValue"函数将用户的值添加到2D数组中的每个值,如主函数所示。

然后,编写"打印"函数,以在数组的每一行上打印出数组中的值,并且每行中的每个数字都被单个空间隔开。

注意:我不应该在每行的最后一个数字之后打印一个空格。

示例:

Input:
2
Output:
7 6
25 1

我遇到的问题是,我需要在输出中完全有一个空间,但是我只在某些输入值中得到它。例如,当输入为 -1 时我得到输出:

4 3
22-2      <- Notice that there is not an space.

有人可以帮助我修复它。谢谢

#include <iostream>
#include<iomanip>
using namespace std;
void addValue(int my_array[][2],int value)
{
   for(int i=0;i<2;i++)
   {
       for(int j=0;j<2;j++)
       {
           my_array[i][j]=my_array[i][j]+value;  
       }
   }
}
void print(int my_array[][2])
{
   for(int i=0;i<2;i++)
   {
       for(int j=0;j<2;j++)
       {
        cout<<setw(2)<<my_array[i][j];  
    }
       cout<<endl;
   }
}
int main()
{
     int my_array[2][2] = {{5,4},{23,-1}};
     int value;
     cin >> value;
     addValue(my_array, value);
     print(my_array);
     return 0;
}
cout<<setw(2)<<my_array[i][j]; 

以2个字符的最小间距输出my_array[i][j]。如果您的值需要2个或更多字符以显示,则...嗯,这是一个示例:

std::cout << std::setw(1) << 42 << std::setw(2) << 42 << std::setw(3) << 42 << std::endl;

输出

4242 42

因此,在示例代码23中采用2个字符,-1采用2个字符。他们被压在一起并以23-1的成绩。

解决方案:

强制空间

cout<<setw(2)<<my_array[i][j] << ' '; 

这可能会弄乱列的间距,并在行规则末端打破无空间,因此,另一个选项是确保传递到setw的数字足够大,可以保持间距,无论如何。<<<<<<<<<<<<<<<<

cout<<setw(100)<<my_array[i][j]; 

好吧,那100是过分的,但是你明白了。您也可以将空间放在首位。

cout<<setw(2)<<' ' << my_array[i][j]; 

没有规则,我看到了前面的空间。另一个选择是不打扰内部for循环

cout << my_array[i][0] << ' ' << my_array[i][1]; 

如果您必须保留for循环,请打印第一个元素而无需任何装饰,然后用前面的空间打印其余元素。

for(int i=0;i<2;i++)
{
    cout<< my_array[i][0];  
    for(int j=1;j<2;j++)
    {
        cout<< ' ' <<my_array[i][j];  
    }
    cout<<endl;
}