C/C++
Посчитать самое длинное слово в тексте
Задан текст (любой), найти в ней самое длинное слово и посчитать, сколько раз встречается в тексте. Написать программу. C++
#include <iostream>
#include <string>
using namespace std;
// все буквы и дефис, которые могут быть частью слова
// я использую только латинские буквы, потому что у меня
// кодировка UTF-8. В ней русские буквы двухбайтовые,
// а я не умею работать с wchar_t
const string az = "abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
bool is_bukva(const char c)
{
for(int x = 0; x < az.length(); x++)
if(c == az[x]) return true;
return false;
}
int main()
{
string str, word, tmp;
int len, maxlen = 0;
int count = 0;
cout << "Введите текст: ";
getline(cin, str); // ввод строки текста
// ищем максмиально длинное слово
for(int x = 0; x < str.length(); x++)
{
tmp = "";
if( is_bukva(str[x]) )
{
while( is_bukva(str[x]) )
{
tmp += str[x];
x++;
}
x--;
len = tmp.length();
if(len > maxlen)
{
maxlen = len;
word = tmp;
}
}
}
cout << "Самое длинное слово в тексте -- " << word << '.' << endl;
// не знаю, почему, но если последний символ введенной строки --
// последняя буква слова, которое ищет программа, то она это слово
// не считает, поэтому я добавляю один символ в конец строки,
// чтобы слово было посчитано
str += '@';
// теперь ищем количество таких слов в тексте
for(int x = 0; x < str.length(); x++)
{
tmp = "";
if(str[x] == word[0])
{
int i = 0;
while(str[x] == word[i])
{
tmp += str[x];
x++;
i++;
}
x--;
if(tmp == word) count++;
}
}
cout << "Количество таких слов -- " << count << '.' << endl;
return 0;
}
#include <string>
using namespace std;
// все буквы и дефис, которые могут быть частью слова
// я использую только латинские буквы, потому что у меня
// кодировка UTF-8. В ней русские буквы двухбайтовые,
// а я не умею работать с wchar_t
const string az = "abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
bool is_bukva(const char c)
{
for(int x = 0; x < az.length(); x++)
if(c == az[x]) return true;
return false;
}
int main()
{
string str, word, tmp;
int len, maxlen = 0;
int count = 0;
cout << "Введите текст: ";
getline(cin, str); // ввод строки текста
// ищем максмиально длинное слово
for(int x = 0; x < str.length(); x++)
{
tmp = "";
if( is_bukva(str[x]) )
{
while( is_bukva(str[x]) )
{
tmp += str[x];
x++;
}
x--;
len = tmp.length();
if(len > maxlen)
{
maxlen = len;
word = tmp;
}
}
}
cout << "Самое длинное слово в тексте -- " << word << '.' << endl;
// не знаю, почему, но если последний символ введенной строки --
// последняя буква слова, которое ищет программа, то она это слово
// не считает, поэтому я добавляю один символ в конец строки,
// чтобы слово было посчитано
str += '@';
// теперь ищем количество таких слов в тексте
for(int x = 0; x < str.length(); x++)
{
tmp = "";
if(str[x] == word[0])
{
int i = 0;
while(str[x] == word[i])
{
tmp += str[x];
x++;
i++;
}
x--;
if(tmp == word) count++;
}
}
cout << "Количество таких слов -- " << count << '.' << endl;
return 0;
}
#include < iostream >
#include < fstream >
#include < map >
using namespace std;
int main()
{
ifstream file;
string word;
string longest = "";
map adder;
file.open("D://hello.txt");
if(file)
{
while (file >> word)
{
if (word.length() > longest.length()) longest = word;
if (adder.count(word) == 0) adder[word] = 1; else adder[word] += 1;
}
}file.close();
cout << "Longest word \"" << longest << "\" count " << adder[longest] << " times";
}
*примечание автора: Если самых длинных слов несколько - выводит количество последнего встреченного.
#include < fstream >
#include < map >
using namespace std;
int main()
{
ifstream file;
string word;
string longest = "";
map adder;
file.open("D://hello.txt");
if(file)
{
while (file >> word)
{
if (word.length() > longest.length()) longest = word;
if (adder.count(word) == 0) adder[word] = 1; else adder[word] += 1;
}
}file.close();
cout << "Longest word \"" << longest << "\" count " << adder[longest] << " times";
}
*примечание автора: Если самых длинных слов несколько - выводит количество последнего встреченного.
Похожие вопросы
- Как найти самое длинное слово в строке C++ ?
- Как посчитать самую длинную серию чисел в двумерном массиве, а выводить номер строки
- Распечатать слова данного текста в обратном порядке c++ Надо переделать с помощью указателей
- Выбрать из текста слова, в которых имеются удвоенные согласные буквы
- Дан текст на кириллице произвольного размера. Вывести отдельно все знаки препинания и слова текста.
- Каталог текстов песен на C++
- Задан текст. Определить, сколько слов начинается на заданную букву.
- Срочно нужна помощь (Дана строка, содержащая зашифрованный русский текст. решить нужно на с++
- Как вставить текст форматированный в RichEdit
- Текст вывода не меняется с++
str += '@';
нужно было добавить перед поиском самого слова.
А то вдруг программа не правильно определит длину последнего слова, которое может оказаться самым длинным.