это вызывает у меня злую головную боль, и я надеялся, что смогу помочь. Предполагается, что программа читает в программе 19 целых чисел, а затем выводит наименьшее (2-е целое) и наибольшее (5-е целое) на экран. Однако все мои результаты дают мусор.
#include iostream>
#include <fstream>
#include <cstdlib>
using std::ifstream;
using std::ofstream;
using std::cout;
using std::endl;
//the goal of this program is to read in numbers from a file, then output the
//highest number and the lowest number to the screen
int main() {
ifstream fileInput;
int nOne, nTwo, nThree, nFour, nFive, nSix, nSeven, nEight, nNine, nTen, //there are 19 numbers in the file
nEleven, nTwelve, nThirteen, nFourteen, nFifteen, nSixteen, nSeventeen,
nEighteen, nNineteen;cout << "Opening File" << endl;
fileInput.open("Lab12A.txt"); //the file is opened
if (fileInput.fail())
{
cout << "Input file opening failed. \n"; //the fail check doesnt pop up, so the file has been opened.
exit(1);
}
fileInput >> nOne >> nTwo >> nThree >> nFour >> nFive >> nSix >> nSeven >> nEight
>> nNine >> nTen >> nEleven >> nTwelve >> nThirteen >> nFourteen >> nFifteen //this is where they should be extracted
>> nSixteen >> nSeventeen >> nEighteen >> nNineteen;cout << "The highest number is " << nTwo << endl;
cout << "The lowest number is " << nFive << endl;
fileInput.close();
system("pause");
return 0;
}
Я хотел добавить только комментарий, но так как я не могу этого сделать, я оставляю это как ответ.
Я скопировал ваш файл и создал текстовый файл, чтобы попытаться воспроизвести вашу проблему. Сначала все прошло хорошо (вообще никаких проблем). Но с комментариями от Даниэль Шеплер, Я изменил кодировку файла на UTF8-BOM (Вы можете легко сделать это из меню Кодировка Notepad ++) и попробовать еще раз. Я получил те же значения, которые вы опубликовали. Я не могу дать больше объяснений, как именно следует толковать ценности, но я хочу, чтобы кто-то с большим опытом просветил нас здесь.
Во-первых, я хотел бы поблагодарить всех, кто смотрел и комментировал это, я очень ценю это, проблема была в конечном итоге связана с необходимостью полного пути к файлу .txt, а не относительного пути, который я первоначально разместил. По какой-то причине мой компилятор не смог распознать файл без него. Похоже, глупая ошибка, но я относительно новичок в этом, так что они наверняка пискнут. Еще раз спасибо всем!
Вы можете использовать класс std::vector
нажимаем значения, затем сортируем контейнер и, наконец, печатаем второй и пятый элементы:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>int main(){
std::ifstream in("test.txt");
std::vector<int> vecInt;
int value;
while(in >> value)
vecInt.push_back(value);
in.close();
std::sort(vecInt.begin(), vecInt.end());
// second value is at index 1 and fifth value is at index 4
for(auto i(0); i != vecInt.size(); ++i)
if(i == 1 || i == 4)
std::cout << vecInt[i] << std::endl;std::cout << std::endl << std::endl;
return 0;
}