Определить в 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;
}

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


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

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

7   голосов , оценка 3.429 из 5
Похожие ответы