Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
7 / 7 / 3
Регистрация: 02.11.2012
Сообщений: 152
1

Дан текстовый файл; получить строку, в которой наименьшее число знаков препинания

03.06.2013, 20:39. Показов 3121. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Дан текстовый файл. Получить строку в которой наименьшее число знаков препинания. Как реализовать сие чудо? С файлами ни разу не работал, так что не имею представления. Может кто помочь? Буду благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2013, 20:39
Ответы с готовыми решениями:

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания
Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания
Не работает , выдает ошибку...Можно решение с комментариями!!?) #include <iostream> #include...

Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле
Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в...

Записать в файл строку и проверить сколько там слов и знаков препинания
Нужно записать в файл строку, а после проверить сколько там слов и знаков препинания. Я сделал...

6
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
03.06.2013, 21:41 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
#include <iostream>
#include <fstream>
#include <string>
#include <limits>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt");
    if (!text.good()) return -1;
    string str, min_punct_str;
    size_t punct_count, min_punct_count = numeric_limits<size_t>::max();
    while ( getline(text, str) ) {
        size_t punct_count =
            count_if( begin(str), end(str), ::ispunct );
        if (min_punct_count > punct_count) {
            min_punct_str.swap(str);
            min_punct_count = punct_count;
        }
    }
    cout << min_punct_str;
    text.close();
    return 0;
}
1
7 / 7 / 3
Регистрация: 02.11.2012
Сообщений: 152
04.06.2013, 12:58  [ТС] 3
Цитата Сообщение от Olivеr Посмотреть сообщение
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
#include <iostream>
#include <fstream>
#include <string>
#include <limits>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt");
    if (!text.good()) return -1;
    string str, min_punct_str;
    size_t punct_count, min_punct_count = numeric_limits<size_t>::max();
    while ( getline(text, str) ) {
        size_t punct_count =
            count_if( begin(str), end(str), ::ispunct );
        if (min_punct_count > punct_count) {
            min_punct_str.swap(str);
            min_punct_count = punct_count;
        }
    }
    cout << min_punct_str;
    text.close();
    return 0;
}
спасибо, но выдает ошибку на этой строчке

C++
1
count_if( begin(str), end(str), ::ispunct );
[Error] 'begin' was not declared in this scope
0
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
04.06.2013, 13:01 4
так сделайте или включите C++11
C++
1
count_if( str.begin(), str.end(), ::ispunct );
1
7 / 7 / 3
Регистрация: 02.11.2012
Сообщений: 152
04.06.2013, 13:38  [ТС] 5
Спасибо, хороша программа, работает на ура. Можете несколько строк вкрации объяснить если не сложно? Ну не понимаю я, не работал с файлами, не бачу

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 <iostream>
#include <fstream>
#include <string>
#include <limits>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt"); // ясно
    if (!text.good()) return -1; // не понимаю что значит
    string str, min_punct_str; // задаем переменные (строка которую проверяем и строка с минимальным кол-ом знаков)
    size_t punct_count, min_punct_count = numeric_limits<size_t>::max(); // не понятен смысл
    while ( getline(text, str) ) { // пока происходит считывание текста со строк 
        size_t punct_count = // не ясен
            count_if( str.begin(), str.end(), ::ispunct ); // не ясен
 
        if (min_punct_count > punct_count) { // если мин. число знаков больше числа знаков, то
            min_punct_str.swap(str); // ???
            min_punct_count = punct_count; //  иначе минимальному числу знаков (этой переменной) присвоить значение данному числу знаков, т.е строчке
        }
    }
    cout << min_punct_str; // понятно
    text.close(); // тоже собственно, даже по переводу
    return 0; // знаю
}
0
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
04.06.2013, 13:51 6
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>
#include <limits>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt"); //файл для чтения
    if (!text.good()) return -1; //если какой-либо флаг badbit, eofbit, failbit установлен, то выход
    string str, min_punct_str; //строка и строка с мин. кол-вом пунктуальных знаков
    size_t punct_count, min_punct_count = numeric_limits<size_t>::max(); //количество пунктуальных знаков в строке с минимальным 
    //количеством пунктуальных знаков и в строке, которая сейчас проверяется
    while ( getline(text, str) ) { //пока из файла можно достать строку
        size_t punct_count =
            count_if( str.begin(), str.end(), ::ispunct ); //считаем сколько в строке пункт. знаков
        if (min_punct_count > punct_count) { //если количество пункт. знаков в проверяемой строке меньше чем 
                //в строке с минимальным количество пункт. знаков, то
            min_punct_str.swap(str); //меняем местами строки (почему не = ? а зачем копировать, если содержимое str больше не нужно? 
        //просто меняем владельца str на min_punct_str
            min_punct_count = punct_count; //устанавливаем новое количество пункт. знаков
        }
    }
    cout << min_punct_str;
    text.close();
    return 0;
}
1
7 / 7 / 3
Регистрация: 02.11.2012
Сообщений: 152
04.06.2013, 13:54  [ТС] 7
Цитата Сообщение от Olivеr Посмотреть сообщение
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>
#include <limits>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt"); //файл для чтения
    if (!text.good()) return -1; //если какой-либо флаг badbit, eofbit, failbit установлен, то выход
    string str, min_punct_str; //строка и строка с мин. кол-вом пунктуальных знаков
    size_t punct_count, min_punct_count = numeric_limits<size_t>::max(); //количество пунктуальных знаков в строке с минимальным 
    //количеством пунктуальных знаков и в строке, которая сейчас проверяется
    while ( getline(text, str) ) { //пока из файла можно достать строку
        size_t punct_count =
            count_if( str.begin(), str.end(), ::ispunct ); //считаем сколько в строке пункт. знаков
        if (min_punct_count > punct_count) { //если количество пункт. знаков в проверяемой строке меньше чем 
                //в строке с минимальным количество пункт. знаков, то
            min_punct_str.swap(str); //меняем местами строки (почему не = ? а зачем копировать, если содержимое str больше не нужно? 
        //просто меняем владельца str на min_punct_str
            min_punct_count = punct_count; //устанавливаем новое количество пункт. знаков
        }
    }
    cout << min_punct_str;
    text.close();
    return 0;
}
Спасибо огромное, очень помогли!!
0
04.06.2013, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2013, 13:54
Помогаю со студенческими работами здесь

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и...

дан входной текстовый файл. Вывести в выходной файл строку с максимальным количеством слов
Дан входной текстовый файл (одна строка – одно предложение). Вывести в выходной файл строку...

Вывести в текстовый файл строку, в которой удваивается последняя буква
в) в другой текстовый файл выводит строку, в которой в словах, найденных в предыдущем пункте,...

Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла
#include &quot;fsteam&quot; #include &quot;iomanip&quot; using namespace std; int main() {ifstream in(&quot;f.txt&quot;);...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru