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

Считывание с файла - C++

Восстановить пароль Регистрация
 
gulllak
44 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 66
10.06.2013, 10:41     Считывание с файла #1
Задание 1: Считать с файла и найти количество слов из 4 и менее букв. (test.txt по умолчанию в папке с программой)
Вопрос: Почему он считывает с файла, выводит на экран текст, а во втором цикле while не считает количество слов. А если удалю первый цикл то нормально считает количество слов. Как быть?

Задание 2: Оформить программу в виде функций законченные последовательности действий. Все данные должны передаваться им в качестве параметров. Глобальные переменные запрещены.

Вот что я написал, помогите исправить ошибки:

Задание 1:
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>
using namespace std;
 
int main()
{
    setlocale(0,"rus");
 
    char s=0;
    ifstream f("test.txt");
    if (!f)
    {
        cout<<"Документ отсутствует!"<<endl<<endl;
        system ("pause");
    }
 
    cout<<"Текст в файле:"<<endl;
    while(!f.eof())
    {
        s=f.get();
        cout<<s;
    }
 
    string t;
    int kol=0;
    while(!f.eof())
    { 
        f>>t;
        if(t.length()<=4) 
        kol++;
    }
    cout<<endl<<"Количество слов из 4 и менее букв: "<<kol<<endl<<endl;
 
    system("pause");
    return 0;
}
Задание 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
void out()
{
    char s=0;
    ifstream f("test.txt");
    if (!f)
    {
        cout<<"Документ отсутствует!"<<endl<<endl;
        system ("pause");
    }
    cout<<"Текст в файле:"<<endl;
    while(!f.eof())
    {
        s=f.get();
        cout<<s;
    }
    cout<<endl;
}
 
void kolvo()
{
    ifstream f("test.txt");
    if (!f)
    {
        cout<<"Документ отсутствует!"<<endl<<endl;
        system ("pause");
    }
    string t;
    int kol=0;
    while(!f.eof())
    { 
        f>>t;
        if(t.length()<=4) 
        kol++;
    }
    cout<<endl<<"Количество слов из 4 и менее букв: "<<kol<<endl<<endl;
}
 
int main()
{
    setlocale(0,"rus");
 
    out();
    kolvo();
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 10:41     Считывание с файла
Посмотрите здесь:

считывание с файла C++
C++ Считывание из файла
Считывание файла в массив и запись нового файла C++
Считывание файла C++
Заменить считывание с клавиатуры на считывание из файла C++
Считывание с файла C++
C++ Считывание с файла
C++ Считывание из файла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
10.06.2013, 11:12     Считывание с файла #2
Цитата Сообщение от gulllak Посмотреть сообщение
Задание 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt");
    unsigned counter = 0;
    string word;
    if (!text.good()) return -1;
    while (text >> word)
        if (word.size() <= 4)
            ++counter;
    text.close();
    cout << "words with size <= 4 == "
         << counter;
    return 0;
}
Цитата Сообщение от gulllak Посмотреть сообщение
Задание 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
28
29
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int CountWordsLessEqual4(const char* file_name)
{
    ifstream text(file_name);
    if (!text.good()) return -1;
    int counter = 0;
    string word;
    while (text >> word) {cout << word << endl;
        if (word.size() <= 4)
            ++counter;
    }
    text.close();
    return counter;
}
 
int main()
{
    int counter = CountWordsLessEqual4("text.txt");
    if (counter != -1)
        cout << "words with size <= 4 == "
             << counter;
    else cout << "Error";
    return 0;
}
Добавлено через 4 минуты
А вот ваш исправленный вариант:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
bool out()
{
    ifstream f("text.txt");
    if (!f) {
        cout<<"Документ отсутствует!"<<endl<<endl;
        system ("pause");
        return false;
    }
    cout<<"Текст в файле:"<<endl;
    char c = f.get();
    while( !f.eof() ) {
        cout << c;
        c = f.get();
    }
    cout<<endl;
}
 
void kolvo()
{
    string t;
    int kol=0;
    ifstream f("text.txt");
    while(f >> t)
        if(t.length()<=4)
            kol++;
    cout<<endl<<"Количество слов из 4 и менее букв: "<<kol<<endl<<endl;
}
 
int main()
{
    setlocale(0,"rus");
 
    if (!out()) return -1;
    kolvo();
 
    system("pause");
    return 0;
}


Добавлено через 2 минуты
1)
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(0,"rus");
 
    char s=0;
    ifstream f("text.txt");
    if (!f) {
        cout<<"Документ отсутствует!"<<endl<<endl;
        system ("pause");
        return -1;
    }
 
    cout<<"Текст в файле:"<<endl;
    while(!f.eof()) {
        s=f.get();
        cout<<s;
    }
 
    f.close();
    f.open("text.txt");
 
    string t;
    int kol = 0;
    while( f>>t )
        if (t.length() <= 4) ++kol;
 
    cout<<endl<<"Количество слов из 4 и менее букв: "<<kol<<endl<<endl;
    f.close();
    system("pause");
    return 0;
}
gulllak
44 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 66
10.06.2013, 11:24  [ТС]     Считывание с файла #3
Спасибо! Все понятно, и оказывается просто!
Yandex
Объявления
10.06.2013, 11:24     Считывание с файла
Ответ Создать тему
Опции темы

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