Другие языки программирования и технологии
Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова На С++
Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова. На С++
#include <iostream>
#include <string>
#include <regex>
#include <vector>
using namespace std;
vector<string> words(const string& str, const string& signs) {
const regex re{ signs };
const sregex_token_iterator iter{ str.begin(), str.end(), re, -1 };
return { iter, {} };
}
int main() {
const string str("One two,three.four-five;six:seven!eight,nine-ten");
const string re(R"([ ,.;:!?-]+)");
auto result = words(str, re);
for (const auto &word : result) cout << word << '\n';
cout.put('\n');
system("pause");
}
#include <string>
#include <regex>
#include <vector>
using namespace std;
vector<string> words(const string& str, const string& signs) {
const regex re{ signs };
const sregex_token_iterator iter{ str.begin(), str.end(), re, -1 };
return { iter, {} };
}
int main() {
const string str("One two,three.four-five;six:seven!eight,nine-ten");
const string re(R"([ ,.;:!?-]+)");
auto result = words(str, re);
for (const auto &word : result) cout << word << '\n';
cout.put('\n');
system("pause");
}
#include < iostream >
#include < string >
#include < cstdlib >
#include < windows.h >
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
string str, sep;
cout << "Введите строку для анализа" << endl;
getline(cin, str);
cout << "Введите строку разделителей ";
getline(cin, sep);
string ss;
unsigned i = 1;
for (unsigned u = 0; u < str.size(); ++u)
{
bool b = false;
for (char sp : sep)
{
if (str[u] == sp)
{
b = true;
break;
}
}
if (b)
{
cout << i << " слово " << ss << endl;
ss = "";
++i;
}
else
{
ss += str[u];
}
if (u == str.size() - 1)
{
cout << i << " слово " << ss << endl;
ss = "";
}
}
cin.get(); cin.get();
return 0;
}

#include < string >
#include < cstdlib >
#include < windows.h >
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
string str, sep;
cout << "Введите строку для анализа" << endl;
getline(cin, str);
cout << "Введите строку разделителей ";
getline(cin, sep);
string ss;
unsigned i = 1;
for (unsigned u = 0; u < str.size(); ++u)
{
bool b = false;
for (char sp : sep)
{
if (str[u] == sp)
{
b = true;
break;
}
}
if (b)
{
cout << i << " слово " << ss << endl;
ss = "";
++i;
}
else
{
ss += str[u];
}
if (u == str.size() - 1)
{
cout << i << " слово " << ss << endl;
ss = "";
}
}
cin.get(); cin.get();
return 0;
}

separators - строка с разделителями
source - строка со словами
#include //для работы со строками
define SIZE 100
char **words;
for(int i = 0; i < SIZE; i++)
words[i] = new char[SIZE];
int length = strlen(source); //длина исходной строки
int sep_count = strlen(separators); //количество символов разделителей
int words_count = 0;
int current_word_len = 0;
for(int i = 0; i < length; i++){
bool check = true;
for(int j = 0; j < sep_count; j++){
if(source[i] == separators[j]){
check = false; break;
}
}
if(check)
words[words_count][current_word_len++] = source[i];
else{
current_word_len = 0;
words_count++;
}
}
я псевдокод набросал, думаю мысль - ясна!
еще можно с помощью strtok сделать!
source - строка со словами
#include //для работы со строками
define SIZE 100
char **words;
for(int i = 0; i < SIZE; i++)
words[i] = new char[SIZE];
int length = strlen(source); //длина исходной строки
int sep_count = strlen(separators); //количество символов разделителей
int words_count = 0;
int current_word_len = 0;
for(int i = 0; i < length; i++){
bool check = true;
for(int j = 0; j < sep_count; j++){
if(source[i] == separators[j]){
check = false; break;
}
}
if(check)
words[words_count][current_word_len++] = source[i];
else{
current_word_len = 0;
words_count++;
}
}
я псевдокод набросал, думаю мысль - ясна!
еще можно с помощью strtok сделать!
Игорь Смирнов
еще можно с помощью strtok сделать
Похожие вопросы
- Нужно на с++ написать программу по заданию:даны две строки, содержащие не более 100 символов. Строки состоят из слов, р
- Дана строка символов. Признак конца строки "\n" (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести
- Напишите пожалуйста программу в паскале. Дана строка символов,определить количество слов,начинающихся с заданного символа
- Помогите плизззз! задача в паскале! Дана строка символов. Группы символов, разделенные одним или несколькими пробелами
- Строки в С допустим дана строка char str[]="Hello" как к этой строке добавить символ '!' чтобы получилось "Hello!"
- Помогите с задачей, пожалуйста! (Delphi) Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков "+" и "-
- Pascal. Дана строка, элементы - числа через пробел. Как отсечь числа, которые содержат '0'?
- Pascal. Дана строка, найти длину первого и последнего слова первого я нашел, а как второго не понимаю помогите
- Дан двумерный динамический массив, надо составить программу, которая меняет местами две любые строки
- Помогите написать задачу по C++ Дана строка. найти в ней самое длинное слово-палиндром.
Я хотел добавить, да написано, что время редактирования ответа истекло.
#include < string >
#include < cstdlib >
#include < windows.h >
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
string str, sep;
cout << "Введите строку для анализа" << endl;
getline(cin, str);
cout << "Введите строку разделителей ";
getline(cin, sep);
string ss;
unsigned i = 1;
for (unsigned u = 0; u < str.size(); ++u)
{
bool b = false;
for (char sp : sep)
{
if (str[u] == sp)
{
b = true;
break;
}
}
if (b && ss.size() != 0)
{
cout << i << " слово " << ss << endl;
ss = "";
++i;
}
else
{
ss += str[u];
}
if (u == str.size() - 1 && ss.size() != 0)
{
cout << i << " слово " << ss << endl;
ss = "";
}
}
cin.get(); cin.get();
return 0;
}