Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 16:53   #1
starskreen
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 1
По умолчанию Вывести на экран содержимое вектора с наибольшим количеством строк

народ, написал пару недель назад программу на visual c++ для считывания всех строк из входного файла в структуру данных, а потом вывод на экран вектора строк начинающегося на введенную букву.Помогите переделать так , чтоб выводил на экран содержимое вектора с наибольшим количеством строк, вместо введенных букв.

Код:
#include <iostream>
#include <fstream>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <list>
#include <utility>


using namespace std;

      typedef set<string> mySet;
	  typedef mySet::iterator Iterator1;
      typedef vector<string> Strings;
	  typedef Strings::iterator Iterator2;
	  typedef map<char,Strings> myMap;
	  typedef myMap::iterator Iterator;
	  typedef pair<char,Strings> para;

void findelements(char taken,myMap Text)
{   
	int haa=0;
  for(Iterator i=Text.begin(); i!=Text.end(); ++i)
	{
		if(taken==(*i).first) haa=1;
		
	}

  if(haa==1)
    {
      Iterator i=Text.find(taken);
      cout<<"All strings starts with letter "<<(*i).first<<endl;
	  int j=0;

	  for(Iterator2 k=(*i).second.begin(); k!=(*i).second.end(); k++)
	    {
		  cout<<j+1<<" "<<(*i).second[j]<<endl;
	      j++;
	    }
 	}
	  else cout<<"There is no such letter";
}

int main()
{   
    const char *proba;
	char *b= new char;
	mySet M;
	myMap Ma;
	string str;
	Strings str1;
    char taken;
	ifstream in("C:/111.txt");

 
	 ifstream myfile ("C:/111.txt");
     if (myfile.is_open())
  {
    while ( myfile.good() )
    { 
      getline (myfile,str);
	  M.insert(str);
    }
    myfile.close();
  }
	 else 
  {
		 cout << "Unable to open file";
		 system ("pause");
		 return 0;
  }

	for(Iterator1 i=M.begin(); i!=M.end(); ++i)
  { 
	  Iterator1 j=i;
      const char *letter=(*i).c_str();

	    if(letter[0]==b[0])
	  {
	    str1.push_back(*i);
	  } 
	     if(letter[0]!=b[0])
	  {
	    Ma.insert(para(b[0],str1));
	    b[0]=letter[0];
	    str1.clear();
        str1.push_back(*i);
	  }
	 	 if((++j)==M.end())
	  {   
		  Ma.insert(para(letter[0],str1));
	  }
	  
	
  }

	cout<<"Insert the first letter of the string"<<endl;
    cin>>taken;
	findelements(taken,Ma);
    system ("pause");	
	return 0;
}
starskreen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести содержимое списка на экран Rohan C# (си шарп) 2 20.02.2013 13:37
Как вывести содержимое файла на экран в паскале? Fatality Помощь студентам 8 23.04.2009 13:48
Найти и вывести на экран группы с четным количеством символов. задачи Си. Kventin Помощь студентам 13 29.12.2008 16:29
Напечатать строку с наибольшим количеством слов. jenja Помощь студентам 9 07.03.2008 05:28