Я пишу небольшую программу для определения самых больших и самых маленьких чисел, считываемых из файла. Он отлично работает со всеми натуральными числами. Однако, когда дело доходит до отрицательных целых чисел, вещи кажутся сломанными.
int get_largest(std::ifstream& fin)
{
int largest, container;
fin>>container;
largest = container;
while (fin>>container)
{
if (container>largest)
{
//bool check = (container>largest);
largest = container;
}
}
return largest;
}
Вот основная функция
#include <iostream>
#include <fstream>
int get_largest(std::ifstream& fin);
int main( int argc, const char * argv[])
{
using namespace std;
ifstream fin("numbers.dat");
int smallest_value = get_smallest(fin);
int largest_value = get_largest(fin);
cout<<"The smallest value is "<<smallest_value<<endl;
cout<<"The largest value is "<<largest_value<<endl;return 0;
}
Я передаю список номеров в ifstream, как это
1
2
4
10
-2
Выходные данные говорят, что наибольшее число -2 вместо 10. Я попытался использовать целые числа со знаком, но это не помогает.
Спасибо за ваше время!
Задача ещё не решена.
Других решений пока нет …