簡體   English   中英

如何從文件中讀取數字並在數組中使用它們?

[英]How can I read numbers from an file and use them in an array?

我正在制作一個程序,要求用戶打開現有的 txt 文件。 程序應該從文件中讀取數字並將它們存儲到 arrays 中。 我應該用數組中的這些數字創建不同的函數,例如獲取最大數字、最小數字、總和和平均值。 我已經完成了這些功能,但我不知道如何從數組中提取數字。

這是一個數字示例,但不是用空格分隔,而是用新行分隔。

53 22 87 103 -3 75 220 1 64 543 98 44

int getLowest(int num[], int size);
int getHighest(int num[], int size);
int getSum(int num[], int size);
int getAverage(int num[], int size);

int main()
{
    string fileName;
    ifstream inputFile;
    const int ARRAY_SIZE = 12;
    int numbers[ARRAY_SIZE];

    cout << "Enter the name of imput file: ";
    cin >> fileName;

    inputFile.open(fileName);

    if (inputFile)
    {

            cout << " numbers read from input file.\n"
                << "The lowest value is " << getLowest(numbers, ARRAY_SIZE) << endl;
    }
    else
    {
        //Display error message
        cout << "Error, this file does not exist.";
    }
    system("pause");
}

int getLowest(int num[], int size)
{
    int temp = num[0];

    for (int i = 0; i < size; i++) 
    {        
        if (temp < num[i]) 
        {                 
            temp = num[i];
        }
    }
    return temp;
}

int getHighest(int num[], int size)
{
    int temp = num[0];

    for (int i = 0; i > size; i++)
    {
        if (temp > num[i])
        {
            temp = num[i];
        }
    }
    return temp;
}

int getSum(int num[], int size)
{
    int sum = 0;

    for (int i = 0; i < size; i++)
    {
        sum += num[i];
    }
    return sum;
}

double getAverage(int num[], int size)
{
    int sum = 0;
    double average;

    for (int i = 0; i < size; i++)
    {
        sum += num[i];
    }

    average = sum / size;

    return average;
}

當我用上面顯示的數字打開文件時,我得到的結果不起作用。 我得到:

010FFCE0 從輸入文件中讀取的數字。 最低值為 1968178332

在它說“010FFCE0”的地方,我想得到一些說明值的數量和最低值的東西,我希望它是實際的最低值。

這是從文件中讀取數字到std::vector<int>的示例:

int number = 0;
std::vector<int>    database;
while (inputFile >> number)
{
  database.push_back(number);
}

std::vector在這里是一個不錯的選擇,因為它會根據需要動態擴展(根據需要執行動態 memory 分配)。

但是,您不需要存儲數字來確定最高、最低和平均值:

int sum = 0;
int highest;
int lowest;
inputFile >> highest;
lowest = highest;
sum = highest;
int number;
int quantity = 1;
while (inputFile >> number)
{
  if (number > highest)
  {
    highest = number;
  }
  if (number < lowest)
  {
    lowest = number;
  }
  sum += number;
  ++quantity;
}
double average = (sum * 1.0) / quantity;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM