При реализации этого кода
и программа запускается, когда появляется черный экран, он остается активным, ничего больше не ждал, и ничего не произошло не закончилось, не дало мне процесс вернул 0, чтобы узнать, что это сделано, выходной файл пуст, если кто-то может сказать мне, что не так здесь
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{
ifstream file;
ofstream out;
file.open("coinsCoint.txt");
out.open("1234567.txt");
int pennis,nickle,dime,quarter,sum=0;
float total;
while(!file.eof())
{
file >> pennis >> nickle >> dime >> quarter;
sum+=pennis+nickle*5+dime*10+quarter*25;
total=sum/100.0;
}
out << "Total amount collected is: $" << fixed << showpoint <<
setprecision(2) << total;
file.close();
out.close();
return 0;
}
сделал кучу кодов, не проверяя, не могли бы вы сказать мне, как, пожалуйста, ответить вам спасибо
while(!file.eof())
— очень распространенная ошибка. Объяснение здесь. Во-первых, он ТОЛЬКО проверяет, достигнут ли конец файла. Если что-то еще пойдет не так, программа пропустит это. Если я не ошибаюсь, это включает в себя то, что файл не открыт.
Если программа просто сидит и ничего не делает, поместите в свой цикл оператор печати или используйте отладчик для пошагового выполнения кода. Вы, вероятно, узнаете что-то.
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{
ifstream file;
ofstream out;
file.open("coinsCoint.txt");
int pennis = 0, nickle = 0, dime = 0, quarter = 0, sum = 0;
float total = 0.0;
/* check if file is opened */
if (file.is_open()){
while (!file.eof())
{
file >> pennis >> nickle >> dime >> quarter;
cout << "pennis " << pennis << endl;
cout << "nickle " << nickle << endl;
cout << "dime " << dime << endl;
cout << "quarter " << quarter << endl;
sum += pennis + nickle * 5 + dime * 10 + quarter * 25;
total = sum / 100.0;
cout << "total " << total;
}
file.close();
}
/* return if error in file open */
else {
cout<< "can not open given file";
return 0;
}
out.open("1234567.txt");
if (out.is_open()){
out << "Total amount collected is: $" << fixed << showpoint <<
setprecision(2) << total;
out.close();
}
return 0;
}
Аналогичный учебник https://www.uow.edu.au/~lukes/TEXTBOOK/notes-cpp/io/readtextfile.html
Вы всегда должны проверять правильность открытия файла с помощью is_open()
Вам нужно использовать cout <<
для печати, чтобы консоль «черный экран»
файл выглядит так
1
2
3
4
вывод должен быть примерно таким
pennis 1
nickle 2
dime 3
quarter 4
total 1.41Press <RETURN> to close this window...
Я не могу поддержать этот ответ. Он наматывает пластырь на a и устраняет очень простую ошибку, допущенную спрашивающим. while (!file >> pennis >> nickle >> dime >> quarter)
в соответствии с рекомендациями Почему iostream::eof внутри условия цикла считается неправильным? поймал бы и выложил недостающий файл.
Вы даже не проверяете, могут ли ваши файлы быть успешно открыты.