c++ строковый класс string
Подсчитайте количество подстрок (заключенных между запятыми) в строке.
Определите длину самого короткого слова.*/
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <iomanip>
#include <NtLdap.h>
using namespace std;
int main()
{ setlocale(0,"RUS");
string s[80];
char st[80];
cout<<"Введите строку: ";
cin.get(st,80);
int k,i=0,m=0,p=0,min;
for(k=0;k<80;k++)
{if(st[k]!=' ') s[m].push_back(st[k]);
else m++;
if(st[k]=='\0') m++;
}
//for(k=0;k<m;k++) cout<<s[k]<<" ";
p=s[0].length();min=0;
for(k=0;k<m;k++) {
if(s[k].length()<p){p=s[k].length();min=k;}
} //подсчет количество элементов
cout<<"Короткое слово: "<<s[min]<<endl;
int numInterestingWords = 0;
const size_t wordLen = s[80].length();
for (size_t i = 0; i < wordLen; i++)
{
size_t n= count(s[80].begin(),s[80].end(),s);
if (n > 1)
{
numInterestingWords++;
break;
}
}
cout<<"количество подстрок:"<<numInterestingWords;
return 0;
}
здесь неправильно реализовано,
выводит ошибку:
size_t n= count(s[80].begin(),s[80].end(),s);
помогите пожалуйста!!!
Код:
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
string sSentence;
cout << "Input sentence: ";
getline(cin, sSentence);
// количество подстрок между запятыми будет равно собственно количеству запятых + 1
// (если между запятыми есть хотя бы один символ)
const char COMMA = ',';
unsigned countSubstring = 1;
for (size_t i = 0; i < sSentence.size() - 1; ++i)
{
if (COMMA == sSentence && COMMA != sSentence[i+1]) ++countSubstring;
}
cout << "Count of substring between commas: " << countSubstring << endl;
// split to words
const string DELIMITER(", ");
vector<string> vWord;
for (size_t posBegin = 0, posEnd = 0; posEnd != string::npos; )
{
posBegin = sSentence.find_first_not_of(DELIMITER, posEnd);
posEnd = sSentence.find_first_of(DELIMITER, posBegin);
vWord.push_back(sSentence.substr(posBegin, posEnd - posBegin));
}
// find the shortest word
string sShortestWord = *min_element(vWord.begin(), vWord.end());
cout << "The shortest word: " << sShortestWord << endl;
cout << "his length: " << sShortestWord.size() << endl;
return 0;
}
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
string sSentence;
cout << "Input sentence: ";
getline(cin, sSentence);
// количество подстрок между запятыми будет равно собственно количеству запятых + 1
// (если между запятыми есть хотя бы один символ)
const char COMMA = ',';
unsigned countSubstring = 1;
for (size_t i = 0; i < sSentence.size() - 1; ++i)
{
if (COMMA == sSentence && COMMA != sSentence[i+1]) ++countSubstring;
}
cout << "Count of substring between commas: " << countSubstring << endl;
// split to words
const string DELIMITER(", ");
vector<string> vWord;
for (size_t posBegin = 0, posEnd = 0; posEnd != string::npos; )
{
posBegin = sSentence.find_first_not_of(DELIMITER, posEnd);
posEnd = sSentence.find_first_of(DELIMITER, posBegin);
vWord.push_back(sSentence.substr(posBegin, posEnd - posBegin));
}
// find the shortest word
string sShortestWord = *min_element(vWord.begin(), vWord.end());
cout << "The shortest word: " << sShortestWord << endl;
cout << "his length: " << sShortestWord.size() << endl;
return 0;
}
Спасибо!