Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]подсчет строк!


Автор: invert46 25.3.2009, 11:58
Доброго времени суток.
Очень нужна помощь с программой.
Само условие задачи звучит так: Разработать программу, которая подсчитывает число строк в заданном текстовом файле, которые начинаются и заканчиваются одной и той же буквой.

Заранее спасибо за содействие.

Автор: Rickert 25.3.2009, 12:21
invert46, как же стали любить создавать топики, но не задавать вопроса. На это мой любимый ответ: делайте!

Автор: azesmcar 25.3.2009, 12:38
invert46

вот
Код

#include <iostream>
#include <string>
#include <fstream>

int main()
{
    const char* fileName = "test.txt";
    std::ifstream file( fileName, std::ios::in );

    int count = 0;
    int countEqual = 0;

    std::string temp;
    while ( getline( file, temp ) )
    {
        if ( !temp.empty() && temp[ 0 ] == temp[ temp.length() - 1 ] )
            ++countEqual;
        ++count;
    }

    std::cout << "Count of lines: " << count << std::endl;
    std::cout << "Count of lines with equal first and last symbol: " << countEqual << std::endl;

    file.close();
    return 0;
}


Автор: mrbrooks 25.3.2009, 13:56
azesmcar, это при условии что в файле только слова. А если осмысленный текст с запятыми, восклицательными знаками и вопросами. К примеру:
"Убери скотина наган!". Наган будет пропущен.  smile

Добавлено через 40 секунд
А уже что говорить про многоточие.

Автор: azesmcar 25.3.2009, 14:13
mrbrooks, а почему собственно не должно работать?
Цитата

"Убери скотина наган!". Наган будет пропущен.  smile


будет, но задача состоит вроде в том чтобы вывести число "строк" (заметь не слов) которые начинаются и заканчиваются одним и тем же символом.

Автор: volvo877 25.3.2009, 14:13
Цитата(mrbrooks @  25.3.2009,  12:56 Найти цитируемый пост)
К примеру:
"Убери скотина наган!". Наган будет пропущен. 
К примеру, надо задание прочесть внимательно, а потом говорить... Никто не просил считать СЛОВА, достаточно было подсчитать СТРОКИ.

Автор: zim22 25.3.2009, 14:18
mrbrooks, запутал ты меня. Я реализовал подсчёт слов, а не строк smile
Код
#include <string>
#include <algorithm>
#include <fstream>
#include <sstream>
#include <iostream>

bool Replace_pred(const char &c)
{
    static std::string delimiter(".,~!@#$%^&*()_+|-=\\:");
    std::string::size_type pos = delimiter.find(c);
    if (pos != std::string::npos)
        return true;
    else
        return false;

}
int main()
{
    std::ifstream in("file.txt");
    std::string text;
    getline(in, text, '\032');
    std::replace_if(text.begin(), text.end(), Replace_pred, ' ');
    std::istringstream is(text);
    
    int cnt = 0;
    std::string word;
    while (is >> word)
    {
        if (*word.begin() == *word.rbegin())
            ++cnt;
    }
    std::cout << cnt << std::endl;
    return 0;
}


Автор: mrbrooks 25.3.2009, 14:23
Цитата(azesmcar @  25.3.2009,  14:13 Найти цитируемый пост)
будет, но задача состоит вроде в том чтобы вывести число "строк" (заметь не слов) которые начинаются и заканчиваются одним и тем же символом. 

точно  smile 
Цитата(zim22 @  25.3.2009,  14:18 Найти цитируемый пост)
mrbrooks, запутал ты меня. Я реализовал подсчёт слов, а не строк

перебдел йа малость. все таки строки, а не слова  smile 

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