Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с текстовыми файлами

15K
12 марта 2006 года
студент
9 / / 12.03.2006
помогите плиз,у меня имеется текстовый файл,а мне надо найти кол-чество слов в каждом предложение?????все на си
3
12 марта 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by студент
помогите плиз,у меня имеется текстовый файл,а мне надо найти кол-чество слов в каждом предложение?????все на си


Так чем конкретно помочь?

15K
12 марта 2006 года
студент
9 / / 12.03.2006
Цитата:
Originally posted by Green
Так чем конкретно помочь?


ну я и говорю как мне отделить от всего текста каждое предложение,а потом внутри него подсчитать количество слов

3
12 марта 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by студент
ну я и говорю как мне отделить от всего текста каждое предложение,а потом внутри него подсчитать количество слов


Достаточно просто.
Предложение заканчивается точкой, вопросительным и восклицательными знаками.
Внутри предложения слова разделены пробелами и др. знаками препинания.
Не обязательно сначала искать предложения, а потом в них слова.
Перебираешь текст посимвольно. Если встретил после цифро-буквенного символа нецифробуквенный, увеличивай счетчик слов. Если встретил точку, вопрос или восклицание, отсчитывай предложение.
Только учти ещё, что есть тире и подчеркивания, которые не разделяют слово.

15K
13 марта 2006 года
студент
9 / / 12.03.2006
Цитата:
Originally posted by Green
Достаточно просто.
Предложение заканчивается точкой, вопросительным и восклицательными знаками.
Внутри предложения слова разделены пробелами и др. знаками препинания.
Не обязательно сначала искать предложения, а потом в них слова.
Перебираешь текст посимвольно. Если встретил после цифро-буквенного символа нецифробуквенный, увеличивай счетчик слов. Если встретил точку, вопрос или восклицание, отсчитывай предложение.
Только учти ещё, что есть тире и подчеркивания, которые не разделяют слово.


спасибо,а какую функцию лудше использовать для поистка нужного символа,...strtok?

1.9K
13 марта 2006 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by студент
спасибо,а какую функцию лудше использовать для поистка нужного символа,...strtok?


Посимвольный поребор проще всего реализовать в обычном цикле.

 
Код:
words = 0;
counter = 0;
for (int i=0; i < strlen(input); i++)
{
     char Symbol = input;
     if (Symbol=='.' || Symbol== '!' || Symbol== '?')
        counter++;
     if (Symbol=='-' || Symbol==',' || Symbol==' ' )
        words++;
}

Могу ошибиться... давно не писал на C/C++
324
13 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by mail0
Посимвольный поребор проще всего реализовать в обычном цикле.
 
Код:
words = 0;
counter = 0;
for (int i=0; i < strlen(input); i++)
{
     char Symbol = input;
     if (Symbol=='.' || Symbol== '!' || Symbol== '?')
        counter++;
     if (Symbol=='-' || Symbol==',' || Symbol==' ' )
        words++;
}

Могу ошибиться... давно не писал на C/C++



Корректней будет, если цикл

 
Код:
for (int i=0; i < strlen(input); i++)
...

заменить на
 
Код:
int len = strlen(input);
for (int i=0; i < len; i++)
...

ну или
 
Код:
for (int i=0; input; i++)
...


Зачем постоянно высчитывать длину строки?
2
13 марта 2006 года
squirL
5.6K / / 13.08.2003
я бы предложил такой вариант.
Код:
#include <stdio.h>

#define OUTW 0
#define INW 1

int main()
{
  int word_count=0, flag=OUTW;
  char c;

  while ( (c = getchar()) != EOF )
  {
    if ( c==' ' ||c == '\n' || c == '\t' || c == '-')
    {
      flag=OUTW;
    }
    else if (flag == OUTW)
    {
      flag=INW;
      ++word_count;
    }
  }
  printf ("words: %d\n", word_count);
  return 0;
}


в большинстве случаев разделителями слов выступают пробелы, табуляция и конец строки. знаки припинания пишуться слитно со словом и могут считаться его частью, что на подсчет не повлияет.
15K
13 марта 2006 года
студент
9 / / 12.03.2006
всеспасибо,щу буду разбираться=)...
15K
13 марта 2006 года
студент
9 / / 12.03.2006
Цитата:

я бы предложил такой вариант.

code:--------------------------------------------------------------------------------
#include <stdio.h>

#define OUTW 0
#define INW 1

int main()
{
int word_count=0, flag=OUTW;
char c;

while ( (c = getchar()) != EOF )
{
if ( c==' ' ||c == '\n' || c == '\t' || c == '-')
{
flag=OUTW;
}
else if (flag == OUTW)
{
flag=INW;
++word_count;
}
}
printf ("words: %d\n", word_count);
return 0;
}
--------------------------------------------------------------------------------


в большинстве случаев разделителями слов выступают пробелы, табуляция и конец строки. знаки припинания пишуться слитно со словом и могут считаться его частью, что на подсчет не повлияет.


а не подскажишь как лудше сделать, так что бы прога искала кол-во слов не в тексте который мы набиваем вручную, а работала с готовым txt файлом????

2
14 марта 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by студент
а не подскажишь как лудше сделать, так что бы прога искала кол-во слов не в тексте который мы набиваем вручную, а работала с готовым txt файлом????


запускать программу так:

prog.exe < text.txt

15K
14 марта 2006 года
студент
9 / / 12.03.2006
Цитата:
Originally posted by squirL
запускать программу так:

prog.exe < text.txt


видно,я полный тюфяк,но нас учат что типа надо работать с тектовами файлами,через указатель,а что ты написал prog.exe < text.txt ,я вообще не понял=(

2
15 марта 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by студент
видно,я полный тюфяк,но нас учат что типа надо работать с тектовами файлами,через указатель,а что ты написал prog.exe < text.txt ,я вообще не понял=(


извини, я забыл, что тут в основном "подоконники" :) строка
prog.exe < text.txt

означает направление содержимого файла text.txt на стандартный поток ввода программы prog.exe, так, как будто ты руками вводишь данные.

15K
15 марта 2006 года
студент
9 / / 12.03.2006
Цитата:
Originally posted by squirL
извини, я забыл, что тут в основном "подоконники" :) строка
prog.exe < text.txt

означает направление содержимого файла text.txt на стандартный поток ввода программы prog.exe, так, как будто ты руками вводишь данные.


а кажется,понял,вместо переменной "с" просто пишем FILE *f,и дальше работаем с этой переменной f

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог