Определить в K-ой строке файла первое и последнее слово - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано:

В текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K.

Требуется:

определить в K-ой строке файла fin.txt первое и последнее слово, поменять их местами и сформировать текстовый файл fout.txt, в который записать измененную строку. Помогите с файлами пожалуйста !!!

Решение задачи: «Определить в K-ой строке файла первое и последнее слово»

textual
Листинг программы
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <fstream>
  5. #include <Windows.h>
  6. #include <algorithm>
  7. #include <locale>
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.     setlocale(LC_CTYPE, "rus");
  13.     SetConsoleCP(1251);
  14.     SetConsoleOutputCP(1251);
  15.     fstream fin("fin.txt", fstream::app);
  16.     string ch;
  17.     while (getline(cin, ch)) { //вводим строку
  18.         ch += '\n';
  19.         fin << ch;              //отпр. ее в файл
  20.     }
  21.     ch.clear();
  22.     fin.close();
  23.     fin.open("fin.txt");        //сбрасываем позицию
  24.     cin.clear();                //сбрасываем флаг EOF
  25.     int x, sym, y = 0; cin >> x;//вводим какую строку читаем
  26.     if (x > 1) {
  27.         while ((sym = fin.get()) != EOF)
  28.             if (sym == '\n')    //ищем эту строку
  29.                 if (++y == x - 1)
  30.                     break;
  31.         getline(fin, ch);       //переписываем ее в string
  32.     }
  33.     else if (x > 0) getline(fin, ch);//если в первой строке
  34.     if (x - 1 != y || !x)   return 0;
  35.     vector<string> words(1);
  36.     fin.close();
  37.     for (int i = 0; i < ch.size(); ++i) {          //выбираем слова из нее
  38.         if (isalpha(static_cast<unsigned char>(ch[i])) || isdigit(static_cast<unsigned char>(ch[i])))
  39.             words.back() += ch[i];
  40.         else if (!words.back().empty() && i != ch.size() - 1)
  41.             words.emplace_back();
  42.     }
  43.     swap(words.front(), words.back());
  44.     fin.open("fin2.txt", fstream::app);
  45.     for (int i = 0; i < words.size(); ++i)                //записываем в новый файл строку
  46.         fin << words[i] << ' ';
  47.     fin << '\n';
  48.     fin.close();
  49.     return 0;
  50. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы