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

Вывести на экран только цитаты, то есть предложения в кавычках

09.09.2015, 22:07. Показов 8733. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
После ввода с клавиатуры произвольного текста,вывести на экран только цитаты, то есть предложения, помещенные в скобки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2015, 22:07
Ответы с готовыми решениями:

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

Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки
Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть...

написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки
написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть...

Вывести на экран только те предложения, в которых есть хотя бы одно однобуквенное слово
Люди, помогите переделать эту прогу таким образом чтобы она читала текстовые файлы и выводила на...

24
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 23:03 2
Shadow123,
Цитата Сообщение от Shadow123 Посмотреть сообщение
цитаты, то есть предложения, помещенные в скобки.
в кавычки*
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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string getStr;
    getline(cin, getStr);
    cout.put('\n');
    for (int i(0), j, LIM(getStr.size()); i < LIM; i++)
    {
        if (getStr[i] == '\"')
        {
            for ((j = i)++; getStr[j] != '\"'; j++)
                cout.put(getStr[j]);
            cout.put('\n');
            i = j;
        }
    }
    cout.put('\n');
    system("pause");
    return 0;
}
0
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
10.09.2015, 12:03 3
Firrari F1 конечно молодец, но может возникнуть ситуация что в тексте будет только одна кавычка, соответсвенно условние бы еще подправить включив туда проверку на с длиной введенного текста.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
10.09.2015, 12:54 4
ShadowFirst, в условии не сказано, что нужно делать проверку на экстримальные условия, да и мою программу можно легко изменить под этот случай
0
Неэпический
17871 / 10636 / 2054
Регистрация: 27.09.2012
Сообщений: 26,738
Записей в блоге: 1
10.09.2015, 13:05 5
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
что нужно делать проверку на экстримальные условия
это ясно из условия:
Цитата Сообщение от Shadow123 Посмотреть сообщение
После ввода с клавиатуры произвольного текста,вывести на экран только цитаты, то есть предложения, помещенные в скобки.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
10.09.2015, 13:13 6
Croessmah, ShadowFirst,
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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
bool checkStr(string& str)
{
    unsigned short count(0);
    for (int i(0), LIM(str.size()); i < LIM;)
        if (str[i++] == '\"')
            count++;
    return !(count % 2);
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string getStr;
    getline(cin, getStr);
    cout.put('\n');
    if (checkStr(getStr))
    {
        for (int i(0), j, LIM(getStr.size()); i < LIM; i++)
            if (getStr[i] == '\"')
            {
                for ((j = i)++; getStr[j] != '\"'; j++)
                    cout.put(getStr[j]);
                cout.put('\n');
                i = j;
            }
    }
    else
        cout << "Некорректное число кавычек" << endl;
    cout.put('\n');
    system("pause");
    return 0;
}
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
10.09.2015, 13:17 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <regex>
 
int main()
{
   std::string str = R"( some "text " some "text some  ." text )";
 
   std::regex reg{R"(".*?")"};
   for (auto it = std::sregex_iterator(str.begin(), str.end(), reg);
        it != std::sregex_iterator(); ++it)
   {
      std::cout << it->str() << "\n";
   }
}
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
10.09.2015, 13:21 8
DiffEreD, у тебя весь код сплош использует элементы Си++11?
0
DiffEreD
10.09.2015, 13:23
  #9

Не по теме:

Это плохо?

0
Croessmah
10.09.2015, 13:23
  #10

Не по теме:

Цитата Сообщение от DiffEreD Посмотреть сообщение
Это плохо?
конечно, на дворе же 2015:)

0
Ferrari F1
10.09.2015, 13:27
  #11

Не по теме:

DiffEreD, завидую я тебе :) Жаль в книгах по Си++ для новичков не написано про эти чудо-команды, а то я тут, понимаешь, изгаляюсь с механическим поиском этих кавычек, а у тебя нужные функции вызвал и все!

0
Croessmah
10.09.2015, 13:36
  #12

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Жаль в книгах по Си++ для новичков не написано про эти чудо-команды
просто книги поновее возьмите :)

0
Ferrari F1
10.09.2015, 13:40
  #13

Не по теме:

Croessmah, считаю, что к новому(более удобному и легкому) нужно идти, пройдя суровые сишные испытания массивами и указателями.

0
1 / 1 / 1
Регистрация: 02.11.2014
Сообщений: 31
10.09.2015, 17:28  [ТС] 14
А есть вариант, по-простому?
А ,то это слишком сложно.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
10.09.2015, 17:43 15
Shadow123, сложно у меня или у DiffEreD'а ?
Если у обоих, то пиши сам (а что еще сказать в этом случае?).
Или тебе нужно осуществить ввод текста в символьный массив (char[]) ?
Используй соотв. функции из стандартной библиотеки для поиска позиций кавычек и для выделения подстрок (чтобы вывести).
Если нужно осуществить проверку (например, кавычка открыта, но не закрыта), можно написать соотв. функцию для массивов в стиле Си.
0
1 / 1 / 1
Регистрация: 02.11.2014
Сообщений: 31
10.09.2015, 17:47  [ТС] 16
именно char массив, а когда пробую ,то ругает кампилятор, и говорит что char в char не может компилировать.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
10.09.2015, 18:19 17
Shadow123,
Цитата Сообщение от Shadow123 Посмотреть сообщение
именно char массив
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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
const short LIM(250);
 
bool checkStr(const char* const& str)
{
    bool count(1);
    for (int i(0); str[i];)
        count = str[i++] == '\"' ? !count : count;
    return count;
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char getStr[LIM];
    cin.getline(getStr, LIM);
    cout.put('\n');
    if (checkStr(getStr))
    {
        for (int i(0), j; getStr[i]; i++)
            if (getStr[i] == '\"')
            {
                for ((j = i)++; getStr[j] != '\"'; j++)
                    cout.put(getStr[j]);
                cout.put('\n');
                i = j;
            }
    }
    else
        cout << "Некорректное число кавычек" << endl;
    cout.put('\n');
    system("pause");
    return 0;
}
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.09.2015, 19:15 18
Цитата Сообщение от Shadow123 Посмотреть сообщение
А есть вариант, по-простому?
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
82
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string                     T_str;
typedef T_str::size_type                T_pos;
typedef std::vector     < T_str     >   T_strings;
/////////////////////////////////////////////////////////////////////////////////////////
T_strings   from_text_get_quotations( T_str   const   &   text )
{
    T_strings       res_quotations;
    const   char    QUOTE   =   '"';
    T_pos           L       =   0;
    T_pos           R       =   0;
 
    while   (
                        (   L   =   text.find( QUOTE,   R       )   )   !=  T_str::npos
                &&      (   R   =   text.find( QUOTE,   L + 1   )   )   !=  T_str::npos
            )
    {
        res_quotations.push_back
            (
                text.substr
                    (
                        L,
                        ++R - L
                    )
            );
    }//while
 
    return  res_quotations;
}
/////////////////////////////////////////////////////////////////////////////////////////
template< typename    TT_cont >
void    print_cont_with_delim
    (
        TT_cont     const   &   cont,
        T_str       const   &   delim_str
    )
{
    std::copy
        (
            cont.begin  (),
            cont.end    (),
 
            std::ostream_iterator<TT_cont::value_type>
                (
                    std::cout,
                    delim_str.c_str()
                )
        );
 
    std::cout   <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    std::cout   <<  "-> ";
    T_str   text;
    getline( std::cin,  text );
    T_strings   quotations  =   from_text_get_quotations( text );
 
    if  (
            quotations.empty()
        )
    {
        std::cout   <<  "В этом тексте нет цитат."
                    <<  std::endl;
    }
    else
    {
        print_cont_with_delim
            (
                quotations,
                "\n"
            );
    }//else
 
    system("pause");
}
0
Ferrari F1
10.09.2015, 19:26
  #19

Не по теме:

Mr.X, компилятор должен удолятсо ат таких кадов. :)

0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.09.2015, 19:36 20
А мне вот кажется, что сколько ни приписывай над сишным кодом
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Код C++
- от этого он плюсовым не станет.
0
10.09.2015, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2015, 19:36
Помогаю со студенческими работами здесь

Файл: вывести на экран только цитаты
Считывание текста из файла и вывод на экран только цитат(текст, заключённый в кавычки)

Считать текст и вывести на экран только цитаты
написать программу которая считывает текст и выводит на экран только цитаты,то есть предложения...

Считать текст из файла и вывести на экран только цитаты
Помогите пожалуйста сижу на контрольной и ламаюсь с задачей по php Задача: &quot;Написать программу,...

Считать текст из файла и вывести на экран только цитаты
пожалуйста помогите мне написать эту программу на с# в динамическом массиве: написать программу...


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

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