Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (перевод 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- количество абзацев в тексте.