C ++结构数组赋值

时间:2017-12-10 00:06:36

标签: c++

大家好, 我正在尝试输出最冷和最热的月份以及最后会看到的文本文件中的相应临时值。我得到的只是一个空格和一个随机数!  请帮助!!! 我有一天要完成这个并且输出不正确>。<

我会简单地说,但网站要求更多文本,所以这是初始分配。

编写一个使用结构和结构数组的程序来存储12个月和最高版本 每个月的温度和低温。该程序应阅读月份的名称,和 来自给定输入文件temps.txt的温度。该程序应输出最高和 一年中最低温度,以及与这些温度相对应的月份。您的 程序必须使用以下功能: 1.创建一个名为Temperature的结构,其数据成员可以存储月份,高温和 低温。 2.函数loadData:该函数从文本文件中读取和存储struct数组中的数据 (temps.txt)。 void loadData(ifstream& infile,Temperature [],int& size); 3.函数averageHigh:该函数计算并返回具有高位的记录 温度。由此,您可以打印高温和相应的月​​份 主要。温度平均值高(温度[],整数); 4.函数averageLow:该函数计算并返回具有低位的记录 温度。从那以后,您可以打印低温和相应的月​​份 主要。温度averageLow(温度[],int size);

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include <istream>

using namespace std;

//struct data type - Temperature
struct Temperature
{
    string month;
    int highTemp;
    int lowTemp;
};

//function prototypes
void loadData(ifstream &infile, Temperature[], int &size);
int averageHigh(Temperature[], int size);
int averageLow(Temperature[], int size);


int main()
{
    Temperature temps[12];
    ifstream infile("temps.txt");

    //variables
    int highest = 0;
    int lowest = 0;
    int index2 = 0;
    int index1 = 0;

    void loadData(ifstream &inFile, Temperature temps[], int &size);

    int averageHigh(Temperature temps[], int highest, int index1);
    cout << "The hottest month this year was " << temps[index1].month << " with a temperature of " << temps[index1].highTemp << endl;

    int averageLow(Temperature temps[], int lowest, int index2);
    cout << "The coldest month this year was " << temps[index2].month << " with a temperature of " << temps[index2].lowTemp << endl;

    //end program
    cin.ignore(100, '\n');
    cout << "Press any key to continue: " << endl;
    getchar();
    return 0;
}

void loadData(ifstream &inFile, Temperature temps[], int &size)
{
    while(!inFile.eof())
    {
        inFile >> temps[size].month >> temps[size].highTemp >> temps[size].lowTemp;
        size++;
    }
}

int averageHigh(Temperature temps[], int highest, int index1)
{
    for (int i = 0; i < 12; i++)
    {
        if (temps[i].highTemp > highest)
        {
            highest = temps[i].highTemp;
            index1 = i;
        }
        return index1;
    }
}

int averageLow(Temperature temps[], int lowest, int index2)
{

    for (int i = 0; i < 12; i++)
    {

        if (temps[i].lowTemp < lowest)
        {
            lowest = temps[i].lowTemp;
            index2 = i;
        }
        return index2;
    }
}

0 个答案:

没有答案