Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (перевод 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;
- }
Объяснение кода листинга программы
- Объявление и инициализация переменных:
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;
- Основной цикл программы:
while (file)
string s;
getline(file, s);
if (s.substr(0, 5) ==
)
paragrafs++;
- Вывод результата:
cout << argv[0] <<
:<< argv[1] <<
: количество абзацев:<< paragrafs << endl;
- Значения переменных:
paragrafs
- количество абзацев в тексте.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д