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

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

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

Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.
Листинг программы
  1. program ads;
  2. var F2,f1: text;
  3. s,name1,name2: string; Na,i,k:integer;
  4. Begin
  5. write('vvedite filename ');readln(name1);
  6. assign(F1,name1);
  7. reset(f1);
  8. write('vvedite filename2 ');readln(name2);
  9. assign(F2,name2);
  10. rewrite(F2);
  11. while not eof(F1) do
  12. begin
  13. i:=k;
  14. readln(F1,s);
  15. if copy(s,1,5)=' ' then dec(i);
  16. end;
  17. write('Vvedite k '); readln(k);
  18. while not eof(f1) do
  19. begin
  20. Readln(F1,s);
  21. if k=i then begin
  22. delete(s,6,Length(s)-5);
  23. repeat
  24. if s<>'' then delete(s,1,Length(s));
  25. until copy(s,1,5)=' ';
  26. end;
  27. end;
  28. Close(F1);
  29. Close(F2);
  30. erase(f1);
  31. rename(f2,name1);
  32. END.

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

textual
Листинг программы
  1. #include <fstream>
  2. #include <iostream>
  3.  
  4. int main(int argc, char* argv[]) {
  5.     using namespace std;
  6.     if (argc != 2) {
  7.         cerr << argv[0] << ": неверное количество аргументов командной строки" << endl;
  8.         return 127;
  9.     }
  10.     ifstream file(argv[1]);
  11.     if (!file) {
  12.         cerr << argv[0] << ": " << argv[1] << ": неудалось открыть файл" << endl;
  13.         return 126;
  14.     }
  15.     size_t paragrafs = 0;
  16.     while (file) {
  17.         string s;
  18.         getline(file, s);
  19.         if (s.substr(0, 5) == "     ") {
  20.             paragrafs++;
  21.         }
  22.     }
  23.     cout << argv[0] << ": " << argv[1] << ": количество абзацев: " << paragrafs << endl;
  24. }

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

  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

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

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

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