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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hativuno
Сообщений: n/a
#1

Количество повторяющихся слов - C++

16.02.2014, 16:07. Просмотров 561. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток! Дано задание подсчитать количество слов в тексте и их длину, а также количество повторяющихся слов. Первые два пункта я сделать смог, а вот с третьим вышел затык.
Прошу помощи знатоков.
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
30
31
32
33
34
35
#include<stdio.h>
#include<conio.h>
#include<fstream>
#include<string>
#include<iostream>
 
using namespace std;
    //char string[1000];
    int i,s=0,z; int c[100], a[100];                  // s-kolichestvo slov, с-dlinna slova, a-temp
    int b[100]; int j;                                // j-schetchik, b-slova s odinakovim kol-vom simvolov
    ifstream ifs("C:\\test.txt"); 
 cin.getline(string, sizeof(string)); 
c[0]=0;                                               //iskluchaem oshibki(naverno)
z=strlen(string);
for (i=1;i<=z;i++)
    if ((string[i]==' ')||(string[i]=='\0'))           
     {s++; a[s]=i; };                                 //poschitali slova i # poslednego slova
 
cout <<"Number of words: "<< s<<endl; cout<<endl;
 
for (i=1; i<=s; i++ )                                 //kolichestvo simvolov v kajdom slove
    {if (i>1) {c[i]=a[i]-a[i-1]-1; cout<<"Word #"<<i<<" contain "<<c[i]<<" simbol(s)"<<endl;}
    else {c[i]=a[i]; cout<<"Word #"<<i<<" contain "<<c[i]<<" simbol(s)"<<endl;}}
 
//nu a teper sravnenie
//vot tut zatik u menya
    
 
for (i=0;i<=z;++i)
    {for (j=0;j<=z;++j)
{if (string[i]=string[j]) {cout<<"Est sovpadenie!"<<endl; cout<<" ci "<<c[i]<<" "<<string[i]<<" cj "<<c[j]<<" "<<string[j]<<endl;}}
    }*/
//cout<<endl;
_getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 16:07     Количество повторяющихся слов
Посмотрите здесь:

Строки - подсчитать максимальное количество повторяющихся слов - C++
Привет всем , помогите кто-нибудь вот с этой задачей, а то у меня чего-то вообще ничего не получается! Задание №22 Описание...

Запись всех повторяющихся слов в новый массив слов - C++
компилируется без ошибок, запускаю консоль после 13 строчки, а именно ввода количества слов, программа где-то вылетает, думал на 15 что-то...

Поиск повторяющихся слов - C++
Напишите программу, в которую сначала вводится набор пар, состоящих из имени и значения, например Joe 17 и Barbara 22. Для каждой пары...

Выявление повторяющихся слов! - C++
// 3.5.1.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &quot;DarkJoker.h&quot; int main() ...

Удаление повторяющихся слов из стоки на C - C++
Здравствуйте. Помогите пожалуйста реализовать задачу: Дана строка. Группа символов разделленая одним или несколькими пробелами считается...

Удаление повторяющихся соседних слов из текста - C++
Помогите, пожалуйста, написать прогу: вводит строку (текст) из файла, удаляет в ней повторяющиеся рядом стоящие слова, и выводит...

Поиск повторяющихся слов через вектор - C++
Здравствуйте. При вводе текста в переменную string current должно только что написанное слово должно попадать в вектор previous, но это...

Как реализовать удаление повторяющихся слов? - C++
Задачей является написание программы, которая: 1) Считывает вводимый в консоль текст до точки. 2) Выкидывает все символы, кроме...

Подсчет повторяющихся слов в двумерном динамическом массиве - C++
Здравствуйте! Пожалуйста, подскажите мне. Мне нужно написать программу, которая подсчитает кол-во одинаковых слов. Из текстового файла со...

Поиск повторяющихся слов в тексте (доработка кода) - C++
Дан текст, содержащий n строк. Для каждого слова указать, сколько раз оно встречается в тексте. Я тут кое-что попробовала сделать (с++),...

Найти ошибку: удаление повторяющихся слов из строки - C++
Написал программу, которая должна удалить из строки повторяющиеся слова. слова разделены только пробелом компилятор ни на что не...

Найти общее количество слов и количество слов на букву ''с'' - C++
Выдает ошибку, что kol неинициализироанная переменная #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;locale&gt; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.02.2014, 17:18     Количество повторяющихся слов #2
hativuno, вряд ли кто то будет разбираться в твоем коде, но подобные задачи лучше решать с помощью SLT(map, set, algorithm и т. д.). Вот эдакое решение в голову пришло (код С++11):
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
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iomanip>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
#include <vector>
 
using input = std::istream_iterator<std::string>;
using Pair = std::pair<std::string, std::string::size_type>;
 
int main()
{
   std::fstream ifs("file.txt");
   if (!ifs.is_open())
   {
      std::cerr << "Error opening file!\n";
      return 1;
   }
 
   std::unordered_multimap<std::string, std::string::size_type> words;
   std::transform(input(ifs), input(), std::inserter(words, words.begin()),
                  [](const std::string& str){ return std::make_pair(str, str.size()); });
 
   std::cout << "Number of words: " << words.size() << "\n\n";
   std::cout << "Length of words:\n\n";
   for (auto& word : words) std::cout << std::setw(20) << std::left << word.first << word.second << "\n";
 
   std::vector<std::string> v;
   std::transform(words.begin(), words.end(), std::back_inserter(v),
                  [](const Pair& p){return p.first;});
   auto pos_of_unique = std::unique(v.begin(), v.end());
 
   std::unordered_set<std::string> s(pos_of_unique, v.end());
 
   std::cout << "\n\nAll repeating words: " << (std::distance(pos_of_unique, v.end()) + s.size()) << "\n";
 
   std::cout << "\nDone." << std::endl;
   return 0;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru