Как я могу прочитать числа из файла и использовать их в массиве? - PullRequest
0 голосов
/ 04 октября 2019

Я делаю программу, которая просила пользователя открыть и существующий текстовый файл. Программа должна прочитать числа из файла и сохранить их в массивах. Я должен создать различные функции с этими числами в массиве, такие как получение наибольшего числа, наименьшего числа, суммы и среднего. Я уже выполнил функции, но я не знаю, как извлечь числа из массива.

Вот пример чисел, но вместо того, чтобы разделить их пробелами, они разделены новой строкой.

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", я хотел бы получить то, что говорит о количестве значений, и самое низкое значение, которое я хотел бы, чтобы оно было фактическим самым низким значением.

1 Ответ

0 голосов
/ 04 октября 2019

Ниже приведен пример чтения чисел из файла в std::vector<int>:

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

. std::vector является хорошим выбором, поскольку он расширяется динамически по мере необходимости (при необходимости динамическое выделение памяти),

Однако вам не нужно хранить числа, чтобы определить самое высокое, самое низкое и среднее:

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;
...