1

当我在输出的第二行输出代码时,会添加一个空格,我无法弄清楚如何删除。我已经在这个网站和谷歌上搜索了答案。抱歉,这是一个简单的修复。会张贴图片,但没有足够的声誉。

#include<iostream>
#include<iomanip>
#include<fstream>


using namespace std;

// global constant variables
const int YEARS = 8;
const int MONTHS = 12;
const int SPACER =5;

// function prototypes

// function to read in values
void getData(double[][MONTHS], int[]);
// function to display values in table format
void printData(double[][MONTHS], int[]);


// function to print data to screen in table format using arrays

int main()
{
    double rain [YEARS][MONTHS];
    int years[YEARS];
    /*cout << " ";*/
    getData(rain, years);
    printData(rain, years);

return 0;
}


// function definitions 

void getData (double rainArray[][MONTHS], int yearArray[])
{
    ifstream fin;

    fin.open("rainfall.txt");

    if (!fin)
    {
        cout << "Error opening file, shutting down now.\n" ;
        exit(EXIT_FAILURE);
    }
    else
    {
        for( int i = 0; i < YEARS; i++)
        {

            fin >> yearArray[i];

            for (int j = 0; j < MONTHS; j++)
            {
                cout << fixed << setprecision(1);
                fin >> rainArray[i][j];

            }
        }
    }
    fin.close();
}   

void printData (double rainArray[][MONTHS], int yearArray[])
{

    for ( int i = 0; i < YEARS; i++){
        cout << yearArray[i] << setw(SPACER);
        for ( int j = 0; j < MONTHS; j ++)
            {cout << rainArray[i][j] << setw(SPACER);
            if (j == 11)
                cout << endl;
        }
    }

}
4

2 回答 2

1

setw()调用(与所有流操纵器一样)需要位于要影响其打印的项目之前。

cout << setw(SPACER) << yearArray[i];

您将它们放在项目之后,因此它们对除第一行之外的所有行都生效(给出问题中描述的结果)。

于 2013-04-23T02:59:52.857 回答
1

你需要在它适用的领域setw() 之前写,而不是之后。

void printData (double rainArray[][MONTHS], int yearArray[])
{

    cout << fixed << setprecision(1);    
    for ( int i = 0; i < YEARS; i++){
        cout << setw(SPACER) << yearArray[i];
        for ( int j = 0; j < MONTHS; j ++)
            {cout << setw(SPACER) << rainArray[i][j];
        }
        count << endl;
    }

}
于 2013-04-23T02:59:56.200 回答