Определить в K-ой строке файла первое и последнее слово - C (СИ)
Формулировка задачи:
Дано:
В текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K.Требуется:
определить в K-ой строке файла fin.txt первое и последнее слово, поменять их местами и сформировать текстовый файл fout.txt, в который записать измененную строку. Помогите с файлами пожалуйста !!!Решение задачи: «Определить в K-ой строке файла первое и последнее слово»
textual
Листинг программы
- #include <iostream>
- #include <vector>
- #include <string>
- #include <fstream>
- #include <Windows.h>
- #include <algorithm>
- #include <locale>
- using namespace std;
- int main()
- {
- setlocale(LC_CTYPE, "rus");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- fstream fin("fin.txt", fstream::app);
- string ch;
- while (getline(cin, ch)) { //вводим строку
- ch += '\n';
- fin << ch; //отпр. ее в файл
- }
- ch.clear();
- fin.close();
- fin.open("fin.txt"); //сбрасываем позицию
- cin.clear(); //сбрасываем флаг EOF
- int x, sym, y = 0; cin >> x;//вводим какую строку читаем
- if (x > 1) {
- while ((sym = fin.get()) != EOF)
- if (sym == '\n') //ищем эту строку
- if (++y == x - 1)
- break;
- getline(fin, ch); //переписываем ее в string
- }
- else if (x > 0) getline(fin, ch);//если в первой строке
- if (x - 1 != y || !x) return 0;
- vector<string> words(1);
- fin.close();
- for (int i = 0; i < ch.size(); ++i) { //выбираем слова из нее
- if (isalpha(static_cast<unsigned char>(ch[i])) || isdigit(static_cast<unsigned char>(ch[i])))
- words.back() += ch[i];
- else if (!words.back().empty() && i != ch.size() - 1)
- words.emplace_back();
- }
- swap(words.front(), words.back());
- fin.open("fin2.txt", fstream::app);
- for (int i = 0; i < words.size(); ++i) //записываем в новый файл строку
- fin << words[i] << ' ';
- fin << '\n';
- fin.close();
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д