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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kid0
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 8
#1

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

04.07.2013, 13:20. Просмотров 548. Ответов 12
Метки нет (Все метки)

Дан файл неопределённой длины. посчитать сколько в нём слов "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();  
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сколько слов в файле? как найти? (C++):

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

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

определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т. д. символов - C++
Добрый день, помогите пожалуйста в программу добавить вот эти 2 пункта. 1)определить, сколько в файле имеется слов, состоящих из одного,...

Определить, сколько в файле имеется слов, состоящих из одного, двух, трех символов - C++
Дан символьный файл f. Считая что кол-во символов в слове не превосходит двадцати: а) определить, сколько в файле f имеется слов,...

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

Найти 50 самых длинных слов в файле - C++
Здравствуйте! Буду благодарна за помощь) Нужно в большом файле с текстом найти 50 самых длинных слов. Кое что сделала, но есть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
}
1
kid0
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 8
04.07.2013, 19:47  [ТС] #3
Denisqwwq,Спасибо, всё работает. А можно подробнее описать каждое действие?
0
alsav22
5420 / 4816 / 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;
}
1
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;
}
0
Vourhey
Почетный модератор
6482 / 2257 / 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();
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 22:02 #7
Denisqwwq, у вас условие задания не выполнено:
Дан файл неопределённой длины.
У вас код сделан под одну строку в файле. Если там несколоко строк?
0
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:11 #8
alsav22, тут я не могу поспорить
0
alsav22
5420 / 4816 / 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 () там лишняя проверка.
0
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:43 #10
alsav22, не расскажете мне про
C++
1
text.clear();
C++
1
temp.empty()
Что это и с чем его едят?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
04.07.2013, 22:48 #11
Цитата Сообщение от Denisqwwq Посмотреть сообщение
temp.empty()
Это проверка на то, что строка пуста. True - если пуста, False - в противном случае.
temp.clear() - делает строку пустой, т.е. такую, что temp.empty() == true.
1
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 22:51 #12
Dani, спасибо, всё встало на свои места
0
alsav22
04.07.2013, 23:35     Сколько слов в файле? как найти?
  #13

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 23:35
Привет! Вот еще темы с ответами:

Найти сколько раз содержимое файла 1 встречается в файле 2 - C++
Дано два файла(путь к файлам ввести с консоли).Найти сколько раз содержимое файла 1 встречается в файле 2.

Как подсчитать количество слов в файле - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char* argv) { ...

Найти в файле самое короткое слово и подсчитать, сколько раз оно используется - C++
Доброго времени суток! ---- Сразу к заданию: Разработать программу, которая читает файл, содержащий текст, определяет, сколько раз...

Как узнать сколько в файле строк? - C++
Погуглил, функций не нашел. Решил изобретать велосипед: int get_file_numstr(char * filename) { unsigned long i = 0; FILE...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru