Форум программистов, компьютерный форум CyberForum.ru

Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
30.09.2010, 19:31     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #1
Здравствуйте, мне вот задание дали. Подскажите алгоритм решения, а то я не очень с этим разбираюсь.
Задача:
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте?
Кто, что подскажет, буду благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2010, 19:31     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте?
Посмотрите здесь:

Определить сколько раз слова встречаются в тексте и сколько непосредственно друг за другом. C++
Дан текст. Вывести количество нечётных цифр в тексте. C++
Определить, сколько слов в тексте начинается на заданную букву C++
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.09.2010, 21:13     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #2
Что означает в вашем понимании слово? Набор буквенных символов, ограниченных пробелами и знаками пунктуации?
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
30.09.2010, 21:38     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #3
Если считать слова по количеству пробелов то можно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    FILE * pFile;
    int ch;
    int count = 0;
    pFile = fopen("MyFile.txt","r");
    if(pFile == NULL) perror ("Error opening file.");
    else
    {
    do{
        ch = fgetc(pFile);
        if(ch == ' ') count++;
    }while(ch != EOF);
    fclose(pFile);
    }
    cout << "There are " << count + 2 << " words in the file." << endl;
 
        system("pause");
        return 0;
}
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.09.2010, 21:52     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #4
Если считать, что слова это то, что состоит из русских и латинских букв, а цифра это именно цифра, а не число, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <fstream>
#include <iostream>
#include <string>
#include <algorithm>
#include <boost/regex.hpp>
 
using namespace std;
 
bool findlet(char c)
{
    if(c>='0' && c<='9')
    {
        cout<<"'"<<c<<"'"<<endl;
        return true;
    }
    return false;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    ifstream file("c:\\temp.txt");
    string str;
    getline(file, str, '\0');
 
    boost::smatch matches;
 
    boost::regex regex("([A-Za-zА-Яа-я]+)");
    string::const_iterator itbegin = str.begin();
    string::const_iterator itend = str.end();
    size_t n=0;
    while (boost::regex_search(itbegin,itend,matches,regex))
    { 
        cout<<'"'<<matches[1]<<'"'<<endl;
        n++;
        itbegin = matches[0].second;
    }
    cout<<"Слов: "<<n<<endl;
    cout<<"Цифр: "<<count_if(str.begin(), str.end(), findlet)<<endl;
    system("pause");
    file.close();
}
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
30.09.2010, 22:04  [ТС]     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #5
#include <boost/regex.hpp>
скажите, что обозначает эта библиотека? при запуске программы у меня из-за этого ошибку выдает
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.09.2010, 22:11     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #6
NikITKA123, boost - это популярная (не знаю как еще объяснить) библиотека для c++.
Скачать ее можно здесь: http://www.boost.org/.
Если у вас Visual Studio, могу дать ссылку на уже установленные библиотеки.
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
30.09.2010, 22:15  [ТС]     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #7
Цитата Сообщение от gooseim Посмотреть сообщение
NikITKA123,
Если у вас Visual Studio, могу дать ссылку на уже установленные библиотеки.
дайте пожалуйста
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.09.2010, 22:18     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #8
http://www.boostpro.com/download/

Добавлено через 1 минуту
Ставьте как можно больше галочек когда будете устанавливать Чтобы под все типы debug и release.
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
30.09.2010, 22:25  [ТС]     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #9
а оно так и должно из нета качаться (53 Mb) при установке или я что-то не то нажал?
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.09.2010, 22:26     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #10
Cначала надо скачать, потом запустить, то что скачали. Там вроде exe или что-то типа того.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.10.2010, 00:06     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #11
Если словами считать всё, что между пробельными символами, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <cctype>
 
bool isDigit(char c) { return isdigit(c); }
 
int wordsCount(const std::string & buf) {
    std::istringstream ist(buf);
    std::string tmp;
    int wc;
    for ( wc = 0; ist >> tmp; ++wc )
        ;
    return wc;
}
 
int main(){
    const char * file_name = "file.txt";
    std::string buf;
    std::ifstream ifs(file_name);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open file " << file_name << " for input!" << std::endl;
        return 1;
    }
    
    ifs.unsetf(std::ios_base::skipws);
    std::copy(std::istream_iterator<char>(ifs), std::istream_iterator<char>(), std::back_inserter(buf));
    ifs.close();
    
    std::cout << "Words: " << wordsCount(buf) << std::endl;
    std::cout << "Digits: " << std::count_if(buf.begin(), buf.end(), isDigit) << std::endl;
    
    return 0;
}
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте?
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
01.10.2010, 01:05     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #12
Если словами считать то, что между пробелами и еще знаками пунктуации, то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <fstream>
#include <iostream>
#include <string>
#include <algorithm>
#include <list>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/bind.hpp>
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "rus");
    ifstream file("c:\\temp.txt");
    string str;
    getline(file, str, '\0');
 
    list< string > words; 
    boost::split( words, str, boost::is_any_of(" ,.;-:"), boost::token_compress_on); 
    words.remove("");
 
    cout<<"Слов: "<<words.size()<<endl;
    cout<<"Цифр: "<<count_if(str.begin(), str.end(), boost::bind(isdigit<char>, _1, locale()) )<<endl;
 
    system("pause");
    file.close();
}
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
01.10.2010, 17:13  [ТС]     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #13
Цитата Сообщение от easybudda Посмотреть сообщение
спасибо. вот только вроде как тут есть неточность. числа правильно считает, а слова считает как все элементы файла, то есть сумма чисел и слов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2010, 19:06     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте?
Еще ссылки по теме:

C++ Посчитать сколько в тексте слов с 1, 2 и 3 слогами
C++ поправьте меня (Определите, сколько различных слов содержится в тексте)
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.10.2010, 19:06     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? #14
Цитата Сообщение от NikITKA123 Посмотреть сообщение
то есть сумма чисел и слов
ну так сказал же
Цитата Сообщение от easybudda Посмотреть сообщение
Если словами считать всё, что между пробельными символами
В прочем не сложно переделать, чтобы числа за слова не считались. На столько не сложно, что просто лень было морочиться... Намекну
Цитата Сообщение от easybudda Посмотреть сообщение
for ( wc = 0; ist >> tmp; ++wc )
вместо этого незатейливого цикла проверять, что при каждой итерации в tmp содержится. Если только цифры - скорее всего это число
Yandex
Объявления
01.10.2010, 19:06     Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте?
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru