Недавно я начал использовать файлы, и у меня возникли проблемы с их реализацией в моем основном проекте колледжа.
Следующий код измеряет, сколько времени вам потребуется, чтобы ввести число и нажать Enter, и записывает имя пользователя, пол и время в файл:
#include <iostream>
#include <ctime>
#include <fstream>
#include <string>
using namespace std;
int LinesCounter(string filename)
{
ifstream b_file(filename);
// new lines will be skipped unless we stop it from happening:
b_file.unsetf(ios_base::skipws);
// count the newlines with an algorithm specialized for counting:
unsigned line_count = count(
istream_iterator<char>(b_file),
istream_iterator<char>(),
'\n');
return line_count;
}
int main()
{
//Starts timing
clock_t begin = clock();
int letter;
cin>>letter;
cin.ignore();
//Obtains the total amount of seconds taken
clock_t end = clock();
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
cout << "\nCongratulations, you took " <<elapsed_secs <<" seconds." <<endl <<endl;
cout<<"Insert your name: ";
string name;
getline(cin, name);
cout<<endl;
cout<<"M/F: ";
char sex;
cin >> sex;
cout<<endl;
cin.ignore();
int NumberOfLines = LinesCounter("Times.txt");
if (NumberOfLines < 10)
{
ofstream a_file ( "Times.txt", ios::app );
a_file<<name <<" " <<sex <<" " <<elapsed_secs <<"s" <<endl;
a_file.close();
}
cin.get();
}
Код должен хранить только 10 раз (10 строк с именем, полом и временем) и должен сортировать список в зависимости от времени. Таким образом, первая строка файла должна иметь самое быстрое время (и соответствующее имя пользователя и пол), а последняя — самое медленное время. Пример:
1) "Times.txt"
- Джон М 1.449s
- Лиз Ф 1.552с
- Элиас М 1.788s
Новое время: Альберт М 1.522с
«Times.txt» — обновлено
- Джон М 1.449s
- Альберт М 1.522s
- Лиз Ф 1.552с
- Элиас М 1.788s
2) "Times.txt"
- Джон М 1.449s
- Альберт М 1.522s
- Лиз Ф 1.552с
- Элиас М 1.788s
- Роб М 1.819с
- Джо М 1,842 с
- Ясень М 1.893с
- Санса Ф 2.108с
- Снежный М 2.134с
- Энди М 2.333 с
Новое время: Ana F 1.799s
"Times.txt" - обновлено
- Джон М 1.449s
- Альберт М 1.522s
- Лиз Ф 1.552с
- Элиас М 1.788s
- Ана Ф 1.799с
- Роб М 1.819с
- Джо М 1,842 с
- Ясень М 1.893с
- Санса Ф 2.108с
- Снежный М 2.134с
Возможное решение. Я думал о том, чтобы каждый раз перемещаться в позицию массива и сортировать их внутри массива, а затем переписывать файл. Дело в том, что я понятия не имею, как манипулировать кодом таким образом. Любая помощь будет оценена.
*Примечание: файл не должен отображать номер позиции перед названием