Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

c++ строковый класс string

61K
09 декабря 2011 года
jenoid
19 / / 02.04.2011
/*Дана строка слов, разделенных пробелами и запятыми.
Подсчитайте количество подстрок (заключенных между запятыми) в строке.
Определите длину самого короткого слова.*/



#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);
61K
09 декабря 2011 года
jenoid
19 / / 02.04.2011
помогите пожалуйста!!!
535
09 декабря 2011 года
Нездешний
537 / / 17.01.2008
Код:
#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;
}
61K
11 декабря 2011 года
jenoid
19 / / 02.04.2011
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог