Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (перевод pascal на С++) - C++

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

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

Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.
program ads;
var F2,f1: text;
    s,name1,name2: string; Na,i,k:integer;
 
Begin
  write('vvedite filename ');readln(name1);
  assign(F1,name1);
  reset(f1);
  write('vvedite filename2 ');readln(name2);
  assign(F2,name2);
  rewrite(F2);
  while not eof(F1) do
  begin
  i:=k;
   readln(F1,s);
   if copy(s,1,5)='     ' then dec(i);
  end;
  write('Vvedite k '); readln(k);
  while not eof(f1) do
  begin
    Readln(F1,s);
    if k=i then begin
    delete(s,6,Length(s)-5);
    repeat
     if s<>'' then delete(s,1,Length(s));
    until  copy(s,1,5)='     ';
    end;
  end;
  Close(F1);
  Close(F2);
  erase(f1);
  rename(f2,name1);
END.

Решение задачи: «Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (перевод pascal на С++)»

textual
Листинг программы
#include <fstream>
#include <iostream>
 
int main(int argc, char* argv[]) {
    using namespace std;
    if (argc != 2) {
        cerr << argv[0] << ": неверное количество аргументов командной строки" << endl;
        return 127;
    }
    ifstream file(argv[1]);
    if (!file) {
        cerr << argv[0] << ": " << argv[1] << ": неудалось открыть файл" << endl;
        return 126;
    }
    size_t paragrafs = 0;
    while (file) {
        string s;
        getline(file, s);
        if (s.substr(0, 5) == "     ") {
            paragrafs++;
        }
    }
    cout << argv[0] << ": " << argv[1] << ": количество абзацев: " << paragrafs << endl;
}

Объяснение кода листинга программы

  1. Объявление и инициализация переменных:
    • using namespace std;
    • int main(int argc, char* argv[])
    • if (argc != 2)
    • cerr << argv[0] <<: неверное количество аргументов командной строки<< endl;
    • return 127;
    • ifstream file(argv[1]);
    • if (!file)
    • cerr << argv[0] <<: << argv[1] <<: неудалось открыть файл<< endl;
    • return 126;
    • size_t paragrafs = 0;
  2. Основной цикл программы:
    • while (file)
    • string s;
    • getline(file, s);
    • if (s.substr(0, 5) ==     )
    • paragrafs++;
  3. Вывод результата:
    • cout << argv[0] <<: << argv[1] <<: количество абзацев: << paragrafs << endl;
  4. Значения переменных:
    • paragrafs - количество абзацев в тексте.

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


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

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

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