Программа читает наибольшее число из файла, но не самое маленькое - PullRequest
1 голос
/ 14 октября 2019

Я пишу программу, которая читает целые числа из входного файла, находит наименьшее и наибольшее число и выводит его, используя цикл while. Мой выходной файл успешно показывает, что он нашел наибольшее число, но он говорит, что наименьшее число равно 0, хотя в моем входном файле наименьшее число равно 11. Вот мой код:

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

using namespace std;

int main()
{
fstream instream;
instream.open("lab7_input.txt");
ofstream outstream;
outstream.open("lab7_output.txt");

int next, largest, smallest;
largest = 0;
smallest = 0;

while (instream >> next)
{
    if (largest < next)
    {
        largest = next;
    }
    if (smallest > next)
    {
        smallest = next;
    }
}

outstream << "The largest number is: " << largest << endl;
outstream << "The smallest number is: " << smallest << endl;
instream.close();
outstream.close();
return 0;
}

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Это ваша проблема: smallest = 0;

При тестировании на минимумы / максимумы попробуйте инициализировать переменные min или max для их противоположного конца спектра. Используйте INT_MIN и INT_MAX для этого. Попробуйте это:

#include <climits>

...

int next, largest, smallest;
largest = INT_MIN;
smallest = INT_MAX;

Теперь ваша программа имеет самые большие / самые маленькие значения, независимо от того, что входит в ваш набор номеров.

2 голосов
/ 14 октября 2019

Я рекомендую установить наибольшее и наименьшее значение для первого прочитанного значения:

instream >> largest;
smallest = largest;
while (instream >> next)
//...

Это позволяет вашим ответам указывать наибольшее и наименьшее в данном наборе чисел. Установка на числовые пределы, не указывает число в наборе.

1 голос
/ 14 октября 2019

если (наименьшее> следующее), но если наименьшее - 0, оно никогда не будет больше следующего, поэтому оно всегда привязано к нулю, чтобы запуск программы был установлен наименьшим = 99999999 // большое число в начале

...