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

Сколько слов в файле? как найти? - C++

Восстановить пароль Регистрация
 
kid0
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 8
04.07.2013, 13:20     Сколько слов в файле? как найти? #1
Дан файл неопределённой длины. посчитать сколько в нём слов "end".
Вот что я попытался сделать, но не получилось. Помогите пожалуйста.
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
#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;
// функция определения символа
void prog()
{
     string fileName, currWord, currMax = "";
 cout<<"\nВедите имя файла ";
    cin>>fileName;
    freopen(fileName.c_str(), "r", stdin);
    while (cin>>currWord)
    {
        if ('end' == currWord[1]&& currWord.length() >= currMax.length())
            currMax = currWord; 
    }
    if (currMax.length()){
            cout<<"Результат:\n"<<currMax;}
    else{
            cout<<"Слов с таким условием не найдено";}
            getch();
         fileName = ' ';
        return ;
   }
            
 
//головная функция
int main()
{ 
setlocale(LC_ALL, "Russian");
menu();  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 13:20     Сколько слов в файле? как найти?
Посмотрите здесь:

Определить, сколько в файле имеется слов, состоящих из одного, двух, трех символов C++
C++ Сколько в файле слов, состоящих не более чем из четырех букв
Сколько в файле слов, состоящих из не более чем четырех букв C++
C++ Найти сколько раз содержимое файла 1 встречается в файле 2
C++ Определить, сколько в текстовом файле слов, состоящих не более чем из четырех букв
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 14:30     Сколько слов в файле? как найти? #2
не уверен, но всё же:
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
int main() 
{
    setlocale (LC_ALL,"rus");
    
    std::string text;
    int j=0;
 
    std::ifstream file;
    file.open("text.txt");
    getline(file,text);
    file.close();
 
    std::cout << "Cтрока из файла:" << std::endl;
    std::cout << text << std::endl;
 
    for (int i(0);i<text.length();i++)
    {       
        if (text[i]=='e' && text[i+1]=='n' && text[i+2]=='d' && (text[i+3]==' ' || text[i+3]=='\0'))
            j++;
    }
 
    std::cout << "Найдено: " << j;
 
    std::cin.get();
    std::cin.get();
    return 0;
}
kid0
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 8
04.07.2013, 19:47  [ТС]     Сколько слов в файле? как найти? #3
Denisqwwq,Спасибо, всё работает. А можно подробнее описать каждое действие?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 20:48     Сколько слов в файле? как найти? #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
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
 
using namespace std;
 
int main()
{ 
    setlocale (LC_ALL,"rus");
    
    string text = "";
    string str = "end";
    int j = 0;
 
    ifstream file("text.txt");
    if (!file.is_open()) cout << "Error!" << endl;
    else
    {
        while (!file.eof())
        {
            file >> text;
            if (text == str && !text.empty()) ++j;
            text.clear();
        }
    
        file.close();
        cout << "Найдено слов " << str << " : " << j << endl;
    }
    
    system("pause");
    return 0;
}
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 21:42     Сколько слов в файле? как найти? #5
kid0, да конечно:
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
int main() 
{
    setlocale (LC_ALL,"rus");
    
    std::string text;
    int j=0;     //счётчик слов "end"
 
    std::ifstream file;      
    file.open("text.txt");   //Открываем файл для чтения.
    getline(file,text);       //Строку из файла помещаем в переменную text
    file.close();              
 
    std::cout << "Cтрока из файла:" << std::endl; //выводим строку
    std::cout << text << std::endl;
 
    for (int i(0);i<text.length();i++)  //пока счётчик меньше размера строки...
    {       
       //проверяем на наличие слов "end", если слово найдено увеличиваем значение j
        if (text[i]=='e' && text[i+1]=='n' && text[i+2]=='d' && (text[i+3]==' ' || text[i+3]=='\0'))
            j++;
    }
 
    std::cout << "Найдено: " << j;
 
    std::cin.get();
    std::cin.get();
    return 0;
}
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.07.2013, 21:59     Сколько слов в файле? как найти? #6
C++
1
2
3
    std::ifstream ifs("text.txt");
    std::cout<<std::count(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>(), std::string("end"))<<std::endl;
    ifs.close();
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 22:02     Сколько слов в файле? как найти? #7
Denisqwwq, у вас условие задания не выполнено:
Дан файл неопределённой длины.
У вас код сделан под одну строку в файле. Если там несколоко строк?
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:11     Сколько слов в файле? как найти? #8
alsav22, тут я не могу поспорить
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 22:33     Сколько слов в файле? как найти? #9
Ещё вариант:
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
43
44
45
46
47
48
49
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>
using namespace std;
 
 
int main()
{ 
    
    setlocale (LC_ALL,"rus");
    
    string text;
    int j = 0;     // счётчик слов "end"
 
    ifstream file;      
    file.open("text.txt");   //Открываем файл для чтения.
    if (!file.is_open()) cout << "Error!" << endl;
    else
    {
        char ch;
        while (1)
        {
            file.get(ch); // читаем по символу текст из файла и помещаем в строку
            if (file.eof()) break;
            text += ch;   
        }
        file.close();
        
        cout << "Cтрока из файла:" << endl; //выводим строку
        cout << text << endl;
 
        stringstream s(text); //Создаём строковый поток и инициализируем его строкой text
    
        string temp = "";
        while (1) // извлекаем слова из строкового потока и сравниваем со словом end
        {
            s >> temp;
            if (temp.empty()) break;
            if (temp == "end") ++j;
            temp.clear();
        }   
        cout << "Найдено: " << j << endl;
    }   
    
    system("pause");
    return 0;
}
Добавлено через 6 минут
Для кода из 4 поста:
C++
1
2
3
4
5
6
while (!file.eof())
{
      file >> text;
      if (text == str) ++j;
      text.clear();
}
В if () там лишняя проверка.
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:43     Сколько слов в файле? как найти? #10
alsav22, не расскажете мне про
C++
1
text.clear();
C++
1
temp.empty()
Что это и с чем его едят?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.07.2013, 22:48     Сколько слов в файле? как найти? #11
Цитата Сообщение от Denisqwwq Посмотреть сообщение
temp.empty()
Это проверка на то, что строка пуста. True - если пуста, False - в противном случае.
temp.clear() - делает строку пустой, т.е. такую, что temp.empty() == true.
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:51     Сколько слов в файле? как найти? #12
Dani, спасибо, всё встало на свои места
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 23:35     Сколько слов в файле? как найти?
Еще ссылки по теме:

C++ определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т. д. символов
Найти в файле самое короткое слово и подсчитать, сколько раз оно используется C++
Найти 50 самых длинных слов в файле C++

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

Или воспользуйтесь поиском по форуму:
alsav22
04.07.2013, 23:35     Сколько слов в файле? как найти?
  #13

Не по теме:

Уже ответили.

Yandex
Объявления
04.07.2013, 23:35     Сколько слов в файле? как найти?
Ответ Создать тему
Опции темы

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