Удалить число, заданное с клавиатуры
Подскажите, пожалуйста, как реализовать ввод числа с клавиатуры и его удаление в файле Если есть повтор числа, то нужно оставить первое его вхождение, а остальное удалить. Если повтора нет, то просто удалить это число например в файле записано 1 4 5 1 1 2 3 , на выходе должно быть 1 4 5 2 3 Вот мой код, но я не пойму как связать вводимое число и его удаление из файла
#include <iostream>
#include <fstream>
#include <list>
#include <Windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
//cout << "Введите число, которое хотите удалить: ";
// int x;
//cin >> x;
int d;
list<int> l{};
fstream f;
f.open("input.txt", ios::in);
if (!f.is_open())
{
cerr << "failed to open input file.";
return 1;
}
while (f >> d)
{
l.push_back(d);
}
f.close();
l.sort();
l.unique();
f.open("output.txt", ios::out);
if (!f.is_open())
{
cerr << "failed to open output file.";
return 1;
}
for (auto elem : l)
{
f << elem << " ";
}
f.close();
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Например, так :)
int main()
{
cout << "Введите число, которое хотите удалить: ";
int x, c = 0;
cin >> x;
ifstream f("input.txt");
ofstream g("output.txt");
for(int k; f >> k; ) if (k == x) c++; else g << k << " ";
if (c > 1) g << x;
}
Выводим все числа, кроме интересующего, а его — просто считаем. Ну а потом смотрим, выводить его или нет...