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

Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j}, исправить код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно написать программу со строками http://www.cyberforum.ru/cpp-beginners/thread666360.html
Пожалуйста помогите написать программу, которая будет подсчитывать количество заглавных букв в строке, введенной с клавиатуры. e. выполнить пункты a и b на оценку 4 балла. f. реализовать меню пользователя, состоящее как минимум из 4-х пунктов: a. ввод данных; b. обработка данных; c. вывод результата на экран; d. выход. g. Для корректной работы меню организовать промежуточное хранение...
C++ Сумма ряда до точность E Четвёртый член ряда равен 0.001411 (можете проверить запустив программу) Вопрос: почему не срабатывает строчка (последняя) if(E<b) printf("Sum ryada do tochnosty %f ravna: %f\n", E, w); Когда 0.0001<0.001411? #include <iostream> #include <stdio.h> #include <math.h> using namespace std; int function(); http://www.cyberforum.ru/cpp-beginners/thread666344.html
Обьясните, пожалуйста, строчки C++
CRect rect; GetWindowRect(&rect); rect.OffsetRect(20,20); if (pic_wnd) delete pic_wnd; pic_wnd = new CPicWnd; pic_wnd->some = this; pic_wnd->CreateEx(NULL, "", "", WS_VISIBLE|WS_OVERLAPPEDWINDOW, rect, this, 0);
Реализовать класс Account, представляющий собой банковский счет C++
Б15.12 Реализовать класс Account , представляющий собой банковский счет. В классе должны быть реализованы 4 поля: фамилия владельца, номер счета, процент начисления и сумма в рублях. Необходимо выполнять следующие операции: сменить владельца счета, снять некоторую сумму со счета, положить деньги на счет, начислить проценты, перевести сумму в доллары, перевести сумму в евро, ...
C++ Компилятор и исполняющая среда CUDA http://www.cyberforum.ru/cpp-beginners/thread666324.html
Помогите разобраться... что не так?? Подскажите.. Должно получиться как на первом скрине
C++ Для заданного числа найти не превышающие его дружественные Написать программу, которая для заданного натурального числа N находит, не превышающие это число дружественные. подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
09.10.2012, 12:38     Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j}, исправить код
Дело в том, что конструкторы очень неудобно вызывать рекурсивно, потому что ничего нельзя сделать перед первым вызовом конструктора. Когда парсистся {a, b, {c, d}, e}, то вызывается один конструктор, реагирующий на первую скобку. Он доходит до второй скобки, рекурсивно вызывает ещё один конструктор, который продолжает просматривать строку. Этот второй даже собирает подмножество {c, d}. Но вот вопрос: как первый узнает, откуда ему смотреть строку дальше?

Поэтому как раз почти никто и не парсит рекурсивные вещи в конструкторах. То, что можно распарсить конечным автоматом без стека — да. Но такое обычно собираются другим методом-парсером и копируется куда надо.

Ну, короче. Вам, видимо, придётся использовать стек явно. Но это тоже костыль, потому что "текущее множество, куда добавлять элементы" может не совпадать с тем, которое конструируется. Если вы не используете рекурсию, то вам же надо будет где-то помнить все подмножества, которые в процессе строительства, и не запутаться, в какое из них сейчас надо добавить следующий считанный элемент.

В общем, вы точно не можете пробудить в себе продажника и убедить преподавателя, что
C++
1
Set newSet = Set::parse("{1, 2, {3, 4, 5}}");
ничем не хуже
C++
1
Set newSet("{1, 2, {3, 4, 5}}");
Это бы всё значительно облегчило и упростило :)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru