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

Ваш аккаунт

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

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

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

Программа выводит пустой экран

10K
20 января 2014 года
trinitro
48 / / 14.06.2010
Занимаюсь по "Самоучитель 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();
}
Псоле компиляции и выполнения на экран выводится набор пустых строк. Пожалуйста подскажите почему?
10K
21 января 2014 года
trinitro
48 / / 14.06.2010
Решено!

В фрагменте


 
Код:
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;
            }
247
21 января 2014 года
wanja
1.2K / / 03.02.2003
Если я ничего не путаю, результатом операции sizeof(buff) будет размер типа char, т.е. 1.
326
02 февраля 2014 года
sadovoya
757 / / 19.11.2005
Путаете :)
Для статических массивов sizeof дает размер содержимого (80 в данном примере).
Правда, не все так просто при передаче массивов в функции, например. См. здесь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог