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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Tetraider
15 / 15 / 1
Регистрация: 06.06.2012
Сообщений: 58
#1

Считать текст из файла и вывести на экран только предложения, не содержащие запятых - C++

21.11.2013, 20:28. Просмотров 1727. Ответов 12
Метки нет (Все метки)

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

Код:

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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string str;
    std::cout<<"Enter infile name\n";
    std::cin>>str;
    std::ifstream ifs(str.c_str());
    if(!ifs)
    {
        std::cerr<<"Can` t open file "<< str <<'\n';
        return 1;
    }
    while(!ifs.eof())
    {
        if(!ifs.eof())
        {
            std::getline(ifs, str);
            if(str.find(',') == std::string::npos)
                std::cout<<str<<'\n';
        }
    }
    ifs.close();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать текст из файла и вывести на экран только предложения, не содержащие запятых (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
21.11.2013, 21:18 #2
Tetraider, а что вам требуется? Сделать, что бы она работала без переносов строк? Читаете весь файл в один string, в цикле ищете и удаляете все символы переноса, затем в цикле читаете в дополнительную переменную все символы до первой точки и работаете уже с ней)
0
ABKA
7 / 7 / 0
Регистрация: 06.11.2013
Сообщений: 50
21.11.2013, 22:56 #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
#include <iostream>
#include <fstream> 
int main()
 
{
    setlocale(LC_ALL, "RUSSIAN");
    std::string str;
    std::cout<<"Enter infile name\n";
    std::cin>>str;    
    std::ifstream ifs(str.c_str());
    if(!ifs)
    {
        std::cerr<<"Can` t open file "<< str <<'\n';
        return 1;
    }
    do
    {
       
        
            std::getline(ifs, str, '.'); //Функция getline перегружена. Она может принимать 2 аргумента(как было у вас) или 3, что нам и нужно.
                                         // То есть считывает не до конца строки, а до точки.
            if(str.find(',') == std::string::npos)
                std::cout<<str<<'\n';
        
    }while(!ifs.eof());
    ifs.close();
    return 0;
}
Как-то так
1
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
22.11.2013, 12:54 #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
34
35
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream in_file("infile.txt");
    char ch;
        string str;
    if(!in_file){
            cout << "fil not found"; return 1;
    }
    else
    {
        while(in_file.good())
        {
 
            in_file.get(ch);
 
            str.push_back(ch);
            if(ch == '.'|| ch =='\n')
                     {
                 if(str.find(',')== str.npos)
                cout << str << endl;
 
                str.clear();
 
            }
        }
    }
    return 0;
 
}
Добавлено через 9 часов 55 минут
а вот, немного исправил:
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 <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream in_file("in.txt");
    char ch;
        string str;
    if(!in_file){
            cout << "fil not found"; return 1;
    }
    else
    {
        while(in_file.get(ch))
        {
            str.push_back(ch);
            if(ch == '.')
                     {
                 if(str.find(',')== str.npos)
                cout << str << endl;
 
                str.clear();
 
            }
        }
    }
    return 0;
 
}
2
Tetraider
15 / 15 / 1
Регистрация: 06.06.2012
Сообщений: 58
22.11.2013, 16:37  [ТС] #5
Спасибо, а не подскажете как работает строчка
C++
1
if(str.find(',')== str.npos)
?
Ну т.е. ищет запятые, а как конкретно?)
0
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
22.11.2013, 16:45 #6
C++
1
if(str.find(',')== str.npos)
здесь "str.find(',')" проходит всю строку, если же среди символов находит запятую то останавливается. "str.npos" -это конец строки. Поэтому здесь проверка, если запятая неббыла найдена то str.find(',') пройдет всю строку до конца, а если найдет запятую то останавливается и уже не будет равна str.npos
1
n_lanskaya
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 14
15.12.2014, 06:55 #7
jurok_85, а как сделать, чтобы мог выдавать русский шрифт?
Пыталась вписывать SetConsoleCP(1251); SetConsoleOutputCP(1251);
Но, выдаёт ошибку, куда не впихаю. Его где-то ещё прописать надо? :с
0
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
15.12.2014, 13:43 #8
что за компилятор у тебя?
0
n_lanskaya
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 14
15.12.2014, 16:59 #9
jurok_85, MinGW
0
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
15.12.2014, 18:17 #10
у меня тоже, программирую в code::blocks 10.05
вот пример в полне рабочей проги с русским языком
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string str;
    cout << "Введите строку: ";
    getline(cin, str);
    cout << str;
    return 0;
 
}
и еще в настройках Code Blocks: Settings - Editor, поставьте Windows-1251, если у вас тоже Code::blocks
вот здесь подробнее
0
n_lanskaya
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 14
15.12.2014, 20:31 #11
jurok_85, в чём может быть проблема, если всё итак поставлено, но вместо языка, всё равно, каракули?
У меня w8.1, могло как-то повлиять?
0
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
16.12.2014, 17:26 #12
да, попробывал вчера на винде 8.1, тоже не получилось. Зайди на эту Русский шрифт в code::block 10-05ссылку. Спроси у alsav22, он по матёрее будет
0
n_lanskaya
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 14
17.12.2014, 03:21 #13
jurok_85, хорошо, спасибо))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2014, 03:21
Привет! Вот еще темы с ответами:

Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых - C++
Начало уже есть, но что-то не тащит. Помогите пожалуйста... #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { FILE *f; ...

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

Считать текст из файла и вывести на экран только предложения начинающиеся с тире - C++
Дан преподавателем код программы для самостоятельного разбора. Помогите понять какая ошибка в 44 строке. #include &lt;iostream&gt; #include...

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


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

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

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