C/C++

Программирование, чтение из файла, с++

Дан текстовый файл. Найти количество абзацев в тексте, если первая строка каждого абзаца начинается с 5 пробелов («красная строка»). Пустые строки между абзацами не учитывать. c++
Иса Бабаев
Иса Бабаев
401
#include <cstdio>

int main()
{
FILE * f1;
f1 = fopen("input.txt","r");
int c, count = 0, space;
int prosto = 0;
while( (c=fgetc(f1)) != EOF )
{
if(c == ' ')
{
space = 0;
count++;
while((c = fgetc(f1)) == ' ') space++;
if(c == EOF) break;
if(space == 5 && c != '\n' && c != '\t' && c != '\r')
count++;
}
while( (c = fgetc(f1)) != '\n' && c != '\r' && c != EOF)
prosto++; /* чтобы что-то делал цикл, пока искал конец абзаца */
}
fclose(f1);
printf("%d\n",count);
return 0;
}
Альберт Исламов
Альберт Исламов
61 640
Лучший ответ
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define groups 5
#define cwords 15

//функция создания
//тестового файла с текстом:
void printwords(FILE *f)
{
int res;

if(rand()%2)
fprintf(f,"%s"," ");
else fprintf(f,"%c",' ');
for(int j = 0; j < 5+(rand()%cwords); j++)
{//for
fprintf(f,"%s"," lorem ipsum");
res=rand()%3;
switch(res)
{
case 0: fprintf(f,"%c",',');break;
case 1: fprintf(f,"%c",';');break;
case 2: fprintf(f,"%c",':');break;
}
}//for

res=rand()%3;
switch(res)
{
case 0: fprintf(f,"%s"," lorem ipsum.");break;
case 1: fprintf(f,"%s"," lorem ipsum!");break;
case 2: fprintf(f,"%s"," lorem ipsum?");break;
}
}


int main()
{
char a='a', group[256]={0};
int ind=0, count=0;
FILE *f=fopen("text.txt","wt");
if(!f) exit(1);
srand(time(NULL));
for(int i = 0; i < 3+(rand()%groups); i++)
printwords(f);

fclose(f);

f=fopen("text.txt","rt");
if(!f) exit(1);
printf("\nFrom file text.txt:\n");
while(fscanf(f,"%c",&a)!=EOF)
{
printf("%c",a);
if(a!='.'&&a!='!'&&a!='?')
group[ind++]=a;
else
{//else
group[ind++]='\0';
ind=0;
if(strstr(group," ")) count++;
memset(group,'\0',sizeof(group));
}//else

}
fclose(f);
//найдено абзацев:
if(count)
printf("\n\nFinded Paragraphs: %d",count);
system("pause");
return 0;
}
Guvanch Begjanow
Guvanch Begjanow
37 945