Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Программа выводит пустой экран


Автор: trinitr0 20.1.2014, 13:33
Занимаюсь по "Самоучитель C++"  автора А. Крупник
в главе 3 есть такой код, который должен читать файл со словами и находить в них анаграммы:

Код

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

int main()
{
    char buff[80];
    string sbuff;

    multimap<string, string> an;
    multimap<string, string>::iterator im,ane;

    ifstream infile("diction");

    while (1)
    {
        infile.getline(buff, sizeof(buff));
        if(infile.eof()) break;
        sbuff = buff;
        sort(sbuff.begin(), sbuff.end());
        an.insert(pair<string, string>(sbuff, buff));
    }

    im = an.begin();
    ane = an.end();

    vector<multimap<string, string>::iterator> chg;

    chg.push_back(im);

    while (++im != ane)
    {
        chg.push_back(im);
        if((*im).first != (*chg[0]).first)
        {
            if(chg.size() > 2)
            {
                for(unsigned int i=0; i < chg.size() - 1; i++);
            cout << endl;
            }

            chg.clear();
            chg.push_back(im);
        }    

    }

    if(chg.size() > 1)
        for(unsigned int i=0; i < chg.size(); i++)
            cout << (*chg[i]).second << endl;
        infile.close();
}


Псоле компиляции и выполнения на экран выводится набор пустых строк. Пожалуйста подскажите почему?
 smile 

Автор: bsa 20.1.2014, 19:52
строки 43-48 очень подозрительные.

Автор: trinitr0 20.1.2014, 21:26
А что подозрительного?

Автор: trinitr0 21.1.2014, 14:08
Решено!

В фрагменте
 
Код

if(chg.size() > 2)
            {
            for(unsigned int i=0; i < chg.size() - 1; i++);
            cout << endl;
            }


исправлены ошибки:

1. убрана `;` на конце цикла
2. добавлена строчка cout << (*chg).second << endl;

Код

if(chg.size() > 2)
            {
                for(unsigned int i=0; i < chg.size() - 1; i++)
                cout << (*chg[i]).second << endl;
                cout << endl;
            }


 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)