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

Самое долгое слово в файле - C++

Восстановить пароль Регистрация
 
Mischanja
Всегда не хватает времени
 Аватар для Mischanja
117 / 117 / 7
Регистрация: 15.10.2009
Сообщений: 493
03.07.2011, 23:14     Самое долгое слово в файле #1
Дали написать прогу:
1 Выводит из файла1 в файл2 строки где одно слово
2 Ищет во втором файле самое долгое слово
3 Считает количество букв в первом слове файла

Но вот 2 и 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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <fstream>
#include <string>
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iomanip>
#include <conio.h>
 
int main() {
    std::ifstream in("f1.txt");
    if (!in) {
        std::cout << "Failure to open input file" << std::endl;
        return 1;
    }
 
    std::ofstream out("f2.txt");
    if (!out) {
        std::cout << "Failure to open output file" << std::endl;
        return 1;
    }
 
    std::string str;
    size_t found = 0;
    while (!in.eof()) {
        std::getline(in, str);
 
        found = str.find_first_of(' ');
        if (found == std::string::npos) {
            out << str << std::endl;
        }
    }
 
    in.close();
    out.close();
 
//самое длинное слово
    in.open("f2.txt");
    if (!in) {
        std::cout << "Failure to open output file" << std::endl;
        return 1;
    }
 
    std::string longest;
    while (in >> str) {
        if (str.length() > longest.length()) {
            longest = str;
        }
    }
 
    std::cout << "Longest word in output file is " << longest << std::endl;
 
//Кол. букв первого слова
    in.open("f2.txt");
    if (!in) {
        std::cout << "Failure to open output file" << std::endl;
        return 1;
    }
 
    in >> str;
    std::cout << "First word in output file has " << str.length() << " symbols" << std::endl;
 
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2011, 23:14     Самое долгое слово в файле
Посмотрите здесь:

Поменять местами самое длинное слово и самое короткое слово в тексте C++
Напечатать самое длинное слово, найденное в текстовом файле C++
C++ Дан текстовый файл F. найти самое долгое слово, вторая буква которых "о". если слов с одинаковой длинной несколько, то сообщить об этом
C++ Найти самое длинное слово в файле
Самое короткое слово в файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.07.2011, 23:21     Самое долгое слово в файле #2
Оно и не должно работать, так как вы сравниваете не слово, а строку. До сего момента, слово - это набор символов, заключенных между пробелами, абзацем и пробелом и т.д. ( мое понимание).
Вот и выделяйте из строки слова. Тогда можно и сравнивать!
Mischanja
Всегда не хватает времени
 Аватар для Mischanja
117 / 117 / 7
Регистрация: 15.10.2009
Сообщений: 493
03.07.2011, 23:24  [ТС]     Самое долгое слово в файле #3
Михаил, помогите исправить пожалуйста
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.07.2011, 23:35     Самое долгое слово в файле #4
Тут надо заново все писать, а не изменять...
Вот, давно писал что - то похожее, посмотрите ( тут и выделение слов, и сравнение ):линк
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
04.07.2011, 00:47     Самое долгое слово в файле #5
Mischanja, изменил ваш код, теперь работает как надо:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iomanip>
#include <conio.h>
 
int main() {
        std::ifstream in("file.txt");
        if (!in) {
                std::cout << "Failure to open input file" << std::endl;
                return 1;
        }
 
        std::ofstream out("f2.txt");
        if (!out) {
                std::cout << "Failure to open output file" << std::endl;
                return 1;
        }
 
        std::string str;
        std::stringstream sstr;
    size_t cnt;
        while (!in.eof()) {
                                std::getline(in, str);
                sstr.str(str);
                cnt = 0;
                while (sstr >> str)
                    ++cnt;
                
                if (1 == cnt)
                    out << str << std::endl;
                sstr.clear();
        }
 
        in.close();
        in.clear();
        out.close();
    out.clear();
 
//самое длинное слово
        in.open("f2.txt");
        if (!in) {
                std::cout << "Failure to open input file" << std::endl;
                return 1;
        }
 
        std::string longest;
        while (in >> str) {
                if (str.length() > longest.length()) {
                        longest = str;
                }
        }
 
        std::cout << "Longest word in output file is " << longest << std::endl;
 
//Кол. букв первого слова
        /*in.open("f2.txt");
        if (!in) {
                std::cout << "Failure to open output file" << std::endl;
                return 1;
        }*/
        in.clear();
        in.seekg(std::ios::beg);
 
        in >> str;
        std::cout << "First word in output file has " << str.length() << " symbols" << std::endl;
 
        in.close(); 
        getch();
        return 0;
}
Mischanja
Всегда не хватает времени
 Аватар для Mischanja
117 / 117 / 7
Регистрация: 15.10.2009
Сообщений: 493
04.07.2011, 02:08  [ТС]     Самое долгое слово в файле #6
спасибо пошло

Добавлено через 17 минут
помогите еще с таким пожалуйста:
1 Скопировать в файл2 строки которые не имеют буквы А и находятся между Н1 и Н2 номерами
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <fstream>
#include <string>
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iomanip>
#include <conio.h>
 
#include <iostream>
#include <fstream>
#include <string>
 
int main() {
    std::ifstream in("f1.txt");
    if (!in) {
        std::cout << "Failure to open input file" << std::endl;
        return 1;
    }
 
    std::ofstream out("f2.txt");
    if (!out) {
        std::cout << "Failure to open output file" << std::endl;
        return 1;
    }
 
    std::string str;
    size_t found = 0;
    size_t index = 0;
 
    // !!! номера строк N1 и N2
    size_t n1 = 2;
    size_t n2 = 6;
 
    while (!in.eof()) {
        ++index;
        std::getline(in, str);
 
        if (index > n1 && index < n2) {
            found = str.find_first_of('A');
            if (found == std::string::npos) {
                out << str << std::endl;
            }
        }
    }
 
    in.close();
    out.close();
 
    in.open("f2.txt");
    if (!in) {
        std::cout << "Failure to open output file" << std::endl;
        return 1;
    }
 
    size_t cur_vowels = 0;
    size_t max_vowels = 0;
    size_t count = 0;
    index = 0;
    found = 0;
 
    while (!in.eof()) {
        ++count;
        std::getline(in, str);
 
        found = str.find_first_of("aeuio");
        while (found != std::string::npos) {
            ++cur_vowels;
            found = str.find_first_of("aeuio", found + 1);
        }
 
        if (cur_vowels > max_vowels) {
            max_vowels = cur_vowels;
            index = count;
        }
    }
 
    std::cout << "String with maximum vowels has index " << index << std::endl;
    getch();
    return 0;
}
опять же первое работает а второе нет
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
04.07.2011, 02:13     Самое долгое слово в файле #7
Попробуйте добавить in.clear(); между 47ой и 48ой строками.
Mischanja
Всегда не хватает времени
 Аватар для Mischanja
117 / 117 / 7
Регистрация: 15.10.2009
Сообщений: 493
04.07.2011, 02:21  [ТС]     Самое долгое слово в файле #8
все прекрасно работает.

значит дело в том что я не чистил буфер перед новым действием
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2011, 02:28     Самое долгое слово в файле
Еще ссылки по теме:

Найти самое короткое слово в файле F C++
Найдите самое длинное, и самое короткое слово в заданном предложении C++
Найти в файле самое короткое слово и подсчитать, сколько раз оно используется C++

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
04.07.2011, 02:28     Самое долгое слово в файле #9
Цитата Сообщение от Mischanja Посмотреть сообщение
все прекрасно работает.

значит дело в том что я не чистил буфер перед новым действием
Нет, после первого прохода по файлу флаг конца файла остается установленным, а clear его сбрасывает(и не только его).
Yandex
Объявления
04.07.2011, 02:28     Самое долгое слово в файле
Ответ Создать тему
Опции темы

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