#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("f1.txt");
istream_iterator<string> ifile(in);
istream_iterator<string> eos;
vector<string> coll;
copy(ifile,eos,inserter(coll,coll.begin()));
set<string> coll1;
for(size_t i = 0;i < coll.size();++i){
if(coll.find("e") == 1){
coll1.insert(coll);
}
}
if(coll1.empty())
cout << "There are no words" << endl;
else
copy(coll1.begin(),coll1.end(),
ostream_iterator<string>(cout,","));
cout << endl;
string s = *(coll1.begin());
for(set<string>::const_iterator it = coll1.begin();it != coll1.end();++it){
if((*it).size() > s.size())
s = *it;
}
cout << s <<" length = " << s.size() << endl;
return 0;
}
С++.Задача на работу с фаилами
помогите пожалуйста с задачкой
Дан текстовый файл. Найти самое длинное слово среди слов, вторая буква которых есть е. Если таких слов нет вообще, то сообщить об этом.
C++,STL...
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream inFile("filename.txt");
if (inFile.fail())
{
cerr<<"File error"<<endl;
exit(1);
}
string str,str1;
int len=0,rez=0;
while (inFile>>str)
{
if (str[1]=='e') len=strlen(str.c_str());
if (rez<len)
{
rez=len;
str1=str;
}
}
if (!rez) cout<<"Слов с буквой 'е' нет!!!"<<endl;
else cout<<"Самое длинное слово с 'e' "<<str1<<"и имеет длинну "<<rez<<" символов"<<endl;
}
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream inFile("filename.txt");
if (inFile.fail())
{
cerr<<"File error"<<endl;
exit(1);
}
string str,str1;
int len=0,rez=0;
while (inFile>>str)
{
if (str[1]=='e') len=strlen(str.c_str());
if (rez<len)
{
rez=len;
str1=str;
}
}
if (!rez) cout<<"Слов с буквой 'е' нет!!!"<<endl;
else cout<<"Самое длинное слово с 'e' "<<str1<<"и имеет длинну "<<rez<<" символов"<<endl;
}
проверил все работает
Код:
...
if (str[1]=='e')
len =str.size();
if (rez < len)
rez = str.size();
...
if (str[1]=='e')
len =str.size();
if (rez < len)
rez = str.size();
...
m_Valery А нафига так сложно?????
Цитата: m_Valery
А не надо на коленках писать,выкладываешь код - проверь.Неправильный результат.А вот так правильный.
Код:
...
if (str[1]=='e')
len =str.size();
if (rez < len)
rez = str.size();
...
if (str[1]=='e')
len =str.size();
if (rez < len)
rez = str.size();
...
в чем разница между str.size() и strlen(str.c_str())????Это первое а второе я проверил и у меня код работает.Так что.И это на мой взгляд проще монстра предложенного тобой.
Во-вторых,зачем использовать strlen,если string имеет для определения длины и size и length ?
m_Valeryда я спокоен,про size() банально не подумал(на работе такая термоядерная смесь с и с++),потому что первое пришло в голову,а так они эквиваленты.Если посмотришь программу то увидешь что нашел именно то что надо,слово тоесть...Подправил
Цитата: BroKeR
m_Valeryда я спокоен,про size() банально не подумал(на работе такая термоядерная смесь с и с++),потому что первое пришло в голову,а так они эквиваленты.Если посмотришь программу то увидешь что нашел именно то что надо,слово тоесть...Подправил
Да я все посмотрел.Все правильно.Это я замутил...У меня тоже "термоядерная смесь" на работе...:) Вот и налепил контейнеров.:;)
+1 тебе.