繁体   English   中英

使用嵌套循环并正确查找

[英]Using nested loops and fin correctly

我有一个关于在C ++中正确使用fin和循环的问题。 我从中读取了一个文件,该文件包含78行数据,包括滑雪胜地名称,海拔高度,然后是12个数字(每月降水量)。 该程序应该从该文件中读取,然后将名称,海拔和年平均降水量输出到另一个文件。 由于某种原因,我无法使平均值正常工作。 我必须为78条生产线的每一条运行一个循环,然后运行一个嵌套循环以处理12个月的每一条。

我还必须使用不知道放在哪里的cin.ignore。

码:

int main() {

ifstream fin("../Debug/monthlyPrecipitation.txt");

if (fin.fail())
{
    cout << "Error opening file." << endl;
}

ofstream fout;
fout.open("../Debug/annualPrecipitation.txt", ios::app);

int elevation;
const int MONTHSPERYEAR = 12;
double average, precipTotal, precip;
string stationName;

fout << "Annual Precipitation Report" << endl;
fout << endl;
fout << "Weather Station" << setw(18) << "Elevation" << setw(12) << "Precipitation" << endl << endl;

for (int counter = 1; counter <= 78; ++counter)
{
    getline(fin, stationName, '\t');
    fin >> elevation;

    for (int counter = 1; counter <= 12; ++counter)
        {
            fin >> precip;
            precipTotal = precipTotal + precip; //the issue is here
        }

        average = precipTotal / MONTHSPERYEAR;

        fout << stationName << setw(22) << elevation << setw(12) << average << endl;
}

谢谢。

除了污染precipTotal之外,您似乎忘了将线变成字符串流。 我假设您文件中的一行如下所示:

Resort_Name海拔precip1 precip2 ... precip12

如果您知道那条线,那么您将抓住所有的沉淀物,然后在内部循环中查找时,您将在下一行中阅读。 您需要做的是获得那条线,并将其转换为字符串流。 然后,将度假村名称读入一个不同的字符串中,将海拔高度读入一个int,然后计算平均值而不污染总数。

您无需在内部循环之前清除precipTotal,从而将给定测站的平均值污染了先前测站的结果。

您无需初始化所有POD变量,例如elevationaverageprecipTotalprecip
但是,只有precipTotal会有问题,因为其他的在循环中都有新的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM