Форум программистов, компьютерный форум CyberForum.ru

С++ Повторы слов!!! - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
08.12.2009, 04:43     С++ Повторы слов!!! #1
Помогите написать программу и примерно объяснить алгоритм. А то проболел все лекции по строкам, теперь не могу разобраться, хотя программа вроде несложная...

Повторы слов. Дан текст, содержащий n строк. Для каждого из слов указать, сколько раз оно встречается в тексте.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 04:43     С++ Повторы слов!!!
Посмотрите здесь:

очень надо!!доделать/переделать программу с текстовыми файлами(повторы слов) C++
посчитать повторы слов C++
Удалить повторы в списке l3 C++
C++ Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
C++ Дана последовательность слов. Найти кол-во слов начинающихся с d и кончающихся буквой w
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2009, 06:39     С++ Повторы слов!!! #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string.h>
 
/* CountSubLine:  считает в l количество sub */
long CountSubLine(const char *l, const char *sub)
{
    long n;
    
    if (!(l && sub && *l && *sub))
        return EOF;
    for (n = 0;
         (l = strstr(l, sub));
         n++, l += strlen(sub))
        ;
    return n;
}
Добавлено через 3 минуты
копируешь текст в память, создаёшь массив слов через strtok и для каждого слова применяешь функцию
вообще, задача на бинарное дерево
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
08.12.2009, 06:50     С++ Повторы слов!!! #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <clocale>
 
const char* fname = "file.txt";
 
int main() {
    setlocale(LC_ALL, "rus");
 
    std::ifstream file(fname);
    if ( !file ) {
        std::cerr << "Ошибка открытия файла!" << std::endl;
        return 1;
    }
 
    std::vector<std::string> words_list((std::istream_iterator<std::string>(file)),(std::istream_iterator<std::string>()));
 
    std::vector<std::string>::iterator it = words_list.begin();
 
    for ( ; it != words_list.end(); ++it ) {
        int count = std::count(words_list.begin(), words_list.end(), *it);
        std::cout << "слово \""<< *it << "\" повторяется " << count << " раз." << std::endl;
    }
    return 0;
}
не забываем говорить спасибо.
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
08.12.2009, 12:26  [ТС]     С++ Повторы слов!!! #4
Цитата Сообщение от niXman Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <clocale>
 
const char* fname = "file.txt";
 
int main() {
    setlocale(LC_ALL, "rus");
 
    std::ifstream file(fname);
    if ( !file ) {
        std::cerr << "Ошибка открытия файла!" << std::endl;
        return 1;
    }
 
    std::vector<std::string> words_list((std::istream_iterator<std::string>(file)),(std::istream_iterator<std::string>()));
 
    std::vector<std::string>::iterator it = words_list.begin();
 
    for ( ; it != words_list.end(); ++it ) {
        int count = std::count(words_list.begin(), words_list.end(), *it);
        std::cout << "слово \""<< *it << "\" повторяется " << count << " раз." << std::endl;
    }
    return 0;
}
не забываем говорить спасибо.
Спасибо конечно, но тут никак не задействовано что текст содержит n строк и используется подключение доп файла... Можно как-то всё это проще сделать?



По идее код должен получится какой-то такой... Но выдаёт ошибку, подскажите, как устранить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void main()
 {char txt[255],slv[255],xran[255][255];
  int i,len,flag,k;
  clrscr();k=0;
  printf("Text: \n");
  gets(txt);
  len=strlen(txt);
  for(i=0;i<len;i++)
   if ("%d",txt[i]==32)
     k++;
     strcpy(slv,txt,flag);
     for(i=flag;i<len;i++)
      if (strstr(txt,slv)!=NULL)
    k++;
     printf("slovo %s - %d raz\n",slv,k);
     k=0;"%d",slv[i]=0;
     
 
  getch();
 }
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
08.12.2009, 13:45     С++ Повторы слов!!! #5
Цитата Сообщение от Estale Посмотреть сообщение
тут никак не задействовано что текст содержит n строк
Не понял. Работа производится же со словами. В файле и есть n строк. Что не так?


Цитата Сообщение от Estale Посмотреть сообщение
и используется подключение доп файла.
А ты собираешься вручную слова вводить?
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
08.12.2009, 17:44  [ТС]     С++ Повторы слов!!! #6
Цитата Сообщение от niXman Посмотреть сообщение
Не понял. Работа производится же со словами. В файле и есть n строк. Что не так?



А ты собираешься вручную слова вводить?
Ну вообще да... Нужно ввести слова и программа должна выдать сколько раз каждое слово найдено в тексте...
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
09.12.2009, 22:46  [ТС]     С++ Повторы слов!!! #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void main()
 {char txt[255],slv[255],xran[255][255];
  int i,len,flag,k;
  clrscr();k=0;
  printf("Text: \n");
  gets(txt);
  len=strlen(txt);
  for(i=0;i<len;i++)
   if ("%d",txt[i]==32)
     k++;
     strcpy(slv,txt,flag);                             // Тут выдаёт какую-то ошибку...
     for(i=flag;i<len;i++)
      if (strstr(txt,slv)!=NULL)
        k++;
     printf("slovo %s - %d raz\n",slv,k);
     k=0;"%d",slv[i]=0;
     
 
  getch();
}
Народ, ну помогите исправить ошибку-то!
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
09.12.2009, 22:50     С++ Повторы слов!!! #8
может
strcpy - может копировать только один массив ?!
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.12.2009, 22:51     С++ Повторы слов!!! #9
Estale, strcpy принимает всего два параметра
Лемур
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 14
10.12.2009, 19:41     С++ Повторы слов!!! #10
а если нужно упорядочить слова находящиеся в тексте по убыванию частоты. различия в регистре не учитывать (делать с текстовыми документами)...
NeoPlan
Сообщений: n/a
10.12.2009, 20:54     С++ Повторы слов!!! #11
Цитата Сообщение от Лемур Посмотреть сообщение
а если нужно упорядочить слова находящиеся в тексте по убыванию частоты. различия в регистре не учитывать (делать с текстовыми документами)...
Народ....... помогите... та же ситуация... Заранее очень благодарен...
NeoPlan
Сообщений: n/a
12.12.2009, 20:03     С++ Повторы слов!!! #12
Помогите пожалуйста.... очень надо(((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2011, 21:35     С++ Повторы слов!!!
Еще ссылки по теме:

C++ Функции, повторы,корректировка кода
C++ C++ Повторы в цикле
C++ Подсчитать количество пар массива, не учитывая повторы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wekze
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 4
14.02.2011, 21:35     С++ Повторы слов!!! #13
Помогите бедным студентам)))
Yandex
Объявления
14.02.2011, 21:35     С++ Повторы слов!!!
Ответ Создать тему
Опции темы

Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru