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

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

Войти
Регистрация
Восстановить пароль
 
 
GlavLeopold
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 14
#1

Определить количество символов фрагмента, заключенного в круглые скобки. - C++

16.03.2014, 14:09. Просмотров 1158. Ответов 24
Метки нет (Все метки)

Помогите пожалуйста.В строке имеется единственный фрагмент, заключенный в круглые скобки. Определить количество составляющих его символов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить количество символов фрагмента, заключенного в круглые скобки. (C++):

Определить, корректно ли расставлены круглые, фигурные и квадратные скобки - C++
Вот такая вот нехитрая вроде бы задача: Для введённой пользователем с клавиатуры строки (максимальная длина строки — 80 символов)...

Определить правильной ли последовательности расставлены круглые скобки в тексте - C++
Здравствуйте! Моя задача звучит следующим образом: "Дан текстовый файл, содержащий программу на С++. Проверить эту программу на...

Круглые и квадратные скобки при операторе new - C++
Требуются помощь в использовании оператора new! И так для начала вопросы для понимания, что произойдет при выполнении 2-ух вариантов кода...

Каждую цифру заменить на заключенную в круглые скобки последовательность знаков - C++
Многострочный текст, введенный с клавиатуры, преобразовать следующим образом: каждая цифра заменяется на заключенную в круглые скобки...

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

Каждую цифру заменить на заключенную в круглые скобки последовательность знаков ‘+’ - C++
Многострочный текст, введенный с клавиатуры, преобразовать следующим образом: каждая цифра заменяется на заключенную в круглые скобки...

24
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,710
Записей в блоге: 5
16.03.2014, 20:44 #16
Цитата Сообщение от Tulosba Посмотреть сообщение
IGPIGP, зачем всё это?
Думаете, с использованием только функций-членов:
C++
1
cout<< "The symbols number is : " <<(str_string.substr(str_string.find_first_of("("),str_string.find_first_of(")")-str_string.find_first_of("(")-1)).length()<< endl;
?
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
16.03.2014, 20:48 #17
IGPIGP, "обрезать строку с позиции1 до позиции2 и узнать ее длину" вместо "узнать расстояние разность между позицией2 и позицией1" ?

Добавлено через 39 секунд
В этом и следующем сообщении есть примеры Определить количество символов фрагмента, заключенного в круглые скобки.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,710
Записей в блоге: 5
16.03.2014, 21:39 #18
KOPOJI, но так же видно, как и подстроку получить. Вопрос ведь решён и захотелось одну, но большую строку кода наваять. Содержательную.

Не по теме:

Как сказал один большой мастер языка: "string is a char container", то есть стринги это контейнеры чар!
Тут нельзя проявить малодушие, - всё или ничиго!


0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
16.03.2014, 21:55 #19
IGPIGP, просто лично мне (и, похоже, не мне одному) не видится смысла выполнять лишние действия. Я за минимализм кода, по возможности (желательно без потери читабельности). Не знаю, может быть, вы не поняли, что имелось в виду, но я говорил про это:
В случае вашего кода, вы:
1. Узнаете позицию в строке символа "("
2. Узнаете позицию в строке символа ")"
3. Извлекаете строку от первой позиции до второй
4. Узнаете длину "обрезанной" строки
А я говорил про то, что достаточно было выполнить эти шаги:
1. Узнать позицию в строке символа ")"
2. Узнать позицию в строке символа "("
3. Вычесть разницу между ними.
Как раз здесь и пригодится то самое, что строка в C - это массив символов char (на примере си это проще).
Если это массив, то, следовательно, можно представить стэк, увидим нечто наподобие такого

012345678910
foo(bar)lol

Ваш способ - это просто лишняя вычислительная сложность, которая, в данном случае, еще и ухудшает читабельность.
1. Нашли позицию символа ")" - 7
2. Нашли позицию символа "(" - 3
3. Вычли из первой позиции вторую, узнали количество ячеек между ними - 4
4. Вычли единицу (нам не нужно включать саму скобку) - 3

И, хотя я и понимаю, что вы это знаете, но, все же, не понимаю, зачем делать столько лишних действий

Добавлено через 1 минуту

Не по теме:

Да, и это лишь мое мнение, если что-то не так, прошу меня простить..

1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,710
Записей в блоге: 5
16.03.2014, 22:06 #20
Цитата Сообщение от KOPOJI Посмотреть сообщение
И, хотя я и понимаю, что вы это знаете, но, все же, не понимаю, зачем делать столько лишних действий
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вопрос ведь решён и захотелось...
Да без толку всё. Не смогу объяснить. Приношу извинения, за эстетический шок.
0
KOPOJI
16.03.2014, 22:10
  #21

Не по теме:

да я понял, о чем вы.. Написал, скорее, для ТС-а

0
IGPIGP
16.03.2014, 22:19
  #22

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
да я понял, о чем вы..
Да и так можно. Хотя попытка пошутить оказалась смесью чувства и юмора в неудачной пропорции. Так бывает.Несмотря на это, мне до сих пор кажется, что "контейнер чар", это впечатляет. А вектор, список и пр. стрингов это уже и непомерное их количество.
Наверное где-то переборщил.

0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
17.03.2014, 16:54 #23
И ещё "без стрингов" вдогонку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstring>
 
int main() {
    char buf[255], * pOpen, * pClose;
    
    while ( std::cout << "String: " && std::cin.getline(buf, 255) && *buf ) {
        if ( ( pOpen = strchr(buf, '(') ) && ( pClose = strchr(pOpen, ')') ) )
            std::cout << ( pClose - pOpen - 1 ) << " symbols between brackets." << std::endl;
        else
            std::cout << "Wrong input!" << std::endl;
    }
    
    return 0;
}
2
IGPIGP
17.03.2014, 19:56
  #24

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
И ещё "без стрингов" вдогонку
Но с с-стрингами же.
Красивая техника вычисления выражений в условиях. Особенно, последовательные вычисление и передача pOpen нравится.

0
GlavLeopold
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 14
31.03.2014, 16:12  [ТС] #25
А как здесь использовать структуру и маркер?
0
31.03.2014, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 16:12
Привет! Вот еще темы с ответами:

В заданном тексте удалить часть текста заключенную в круглые скобки - C++
В заданном тексте удалить часть текста заключенную в круглые скобки ( скобки не удалять).

В тексте удалить символы, заключенные в круглые скобки, вместе со скобками - C++
//--------------------------------------------------------------------------- #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include...

Удалить из заданного текста все части, заключенные в круглые скобки - C++
Написать программу удаляющую из заданного текста все части, заключенные в круглые скобки, вместе со скобками.

Проверить, правильно ли в текст входят круглые скобки. Ответ ДА или НЕТ с++ - C++
Помогите написать задачку по с++ &quot;Проверить, правильно ли в текст входят круглые скобки. Ответ ДА или НЕТ&quot; не понимаю, программирования в...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

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