Найти порядковый номер и длину самого длинного предложения - C (СИ)

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

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

здрасьте помогите разобраться с программкой задача: найти порядковый номер и длину самого длинного предложения, ограничение строки - 60 символов(язык си)
#include <stdio.h>
main()
{
FILE *fail;
char pt[70];
int c,np=0,ks=0,max=0;
 
puts("введи имя файла");
gets(pt);
fail=fopen(pt,"r");
if(fail==NULL)
 {puts("error!\n"); return 1;}
 
while((c=fgetc(fail))!=EOF)
 {if(c=='.' || c=='!' || c=='?')
   if(ks>max) {max=ks; ks=0;
   };
 ks++;}
 
fclose(fail);
printf("%d",max);
getchar();
return 0;
}
выводит совершенно неправильно кто может помочь? plz как сделать структуру, где будет хранится номер и длина?

Решение задачи: «Найти порядковый номер и длину самого длинного предложения»

textual
Листинг программы
    kolsent = maxind = 0;
 
    kolsim = max = 0;
 
    flag = 0;
    
    while ((c = getc(fail)) != EOF) {
    
        if (c != '.' && c != '!' && c != '?') {
        
            if (flag == 0) {
                
                flag = 1; 
                
                kolsent++;
            
            }
 
            kolsim++;
        
        } else if (flag == 1) {
        
            flag = 0;
 
            if (max < kolsim) {
 
                max = kolsim;
 
                maxind = kolsent;
 
            }
            
            kolsim = 0;
 
        }
        
    }

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

В данном коде реализована функция, которая находит самое длинное предложение в тексте.

  1. Изначально устанавливаются начальные значения переменных: — kolsent = 0; — maxind = 0; — kolsim = 0; — max = 0; — flag = 0;
  2. В цикле while считывается каждый символ из файла (предполагается, что файл уже открыт).
  3. Проверяется, является ли текущий символ знаком препинания (точкой, восклицательным или вопросительным знаком). Если нет, то: — Если flag равно 0, то: — flag устанавливается в 1, чтобы начать отсчет предложения. — kolsent увеличивается на 1.
  4. Если текущий символ является знаком препинания, то: — Если flag равно 1, то: — flag устанавливается в 0, чтобы начать отсчет нового предложения. — Если max меньше kolsim, то: — max устанавливается в kolsim. — maxind устанавливается в kolsent. — kolsim сбрасывается в 0.
  5. Цикл while продолжается до тех пор, пока не будет достигнут конец файла (EOF).
  6. Значение переменной maxind будет содержать порядковый номер самого длинного предложения, а значение переменной max — его длину.

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


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

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

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