15.07.2010, 05:53 | |
Ответы с готовыми решениями:
1272
Элементарные программы, для лучшего понимания языка... Задачи для тренировки и лучшего понимания языка Литература для лучшего понимания сути программирования Набор задачь для тренировки и улучшения понимания программирования |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2010, 17:40 [ТС] | 622 |
fasked, Через пробелы писать. Например 2 + 5. Одно действие одновременно из +-*/
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
07.08.2010, 19:30 [ТС] | 624 | |||||
fasked, Не знаю даже... Через пробелы логичнее, дабы разбивать строку по частям, когда встречаются пробелы. Посему строка 2 + 5 превратится в
2 + 5... + еще меня atof несколько бесит, ибо получается 2,0,5 в векторе. Приходится смотреть по индексам массива, дабы не было выхода за пределы. Поэтому более двух слагаемых здесь не получится, если не переработать Добавлено через 1 час 37 минут За такой код сразу убивают или дают чуть-чуть пожить? Lolc
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
07.08.2010, 20:31 | 626 | |||||
Дополнил свой калькулятор из поста #403 (страница 41) до той же функциональности, что и в книжке у Страуструпа:
2
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|||||||||||
08.08.2010, 14:26 | 627 | ||||||||||
Имеется неупорядоченный массив из n различных целых чисел от 0 до n (0,1,…,j-1,j+1,….,n). Необходимо за один цикл определить недостающее число j.
Добавлено через 14 минут
Неужели тема умирает?!?!?!... Добавлено через 4 часа 31 минуту Evg, до меня только что дошло что такое ОПЗ и как переводить инфиксную запись в постинфиксную (я не спутал термины?). Вот, сидел надо кодом с утра. Не могу понять одного - как реализавать алгоритм для n-значных чисел. У меня ведь только для цифер!!!...
0
|
08.08.2010, 15:04 | 628 |
Ещё раз просто мои посты в теме про интерпретатор. Там более-менее внятным языком всё объяснено. Весь этот процесс делится на две части. Первая часть - это разбиение строкового выражения на отдельные "слова" (грамматические единицы, token'ы). Вторая часть - анализ этих слов. У тебя всё это сделано, но на очень примитивном уровне и явно одно от другого не разделяется. Всё смешано в одну кучу и работает напрямую со строкой. Такой подход тоже возможен, но в нём очень легко запутаться и очень сложно сопровождать (например, дальнейшее развитие).
1
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
||||||
08.08.2010, 15:11 | 629 | |||||
Вот, работает и для n-значных. А нельзя сначала перевести в ОПЗ а потом уже делить на token-ы? Ведья там у меня все token-ы разделены пробелами, а значит и отличать их легче... Так?
0
|
08.08.2010, 15:20 | 630 |
я бы попробовал выделить токен как отдельную абстракцию. отдельный объект. пусть он также представляется в виде строки, но это будет вектор строк, то есть вектор токенов. тогда проблема отпадет на самом первом этапе. тогда и части программы будут более независимы и понятны.
1
|
08.08.2010, 15:41 | 631 |
Это некий кривой подход. Понятно, что в процессе обучения этого достаточно для понимания общих принципов. Но это некое теоретическое программирование. Практическое заключается в том, что в реальной жизни у тебя ничто и никогда не будет разделено пробелами. И никто тебе не гарантирует, что выражение всегда будет корректным. Например, если подать что-то типа "a++++b", то скорее всего твоя программа загнётся, а было бы гораздо полезнее, если бы она выдала ошибку. И не просто выдала, а ещё и показала место. Ведь когда ты ошибаешься при написании программы компилятор тебе показывает место ошибки. А если бы компилятор просто говорил что "у тебя где-то есть ошибка" или вообще молча умирал, то такой компилятор нужно просто выбросить на помойку
1
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
08.08.2010, 15:47 | 632 |
Как создать массив указателей-на-char?
0
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
08.08.2010, 15:51 | 634 |
Evg, а выделить память под него не надо??
0
|
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|
08.08.2010, 15:53 | 635 |
nikkka, это массив указателей.
Если у вас уже есть реальный объект, можно выполнить присваивание и не выделять память. Если нужно создать новые объекты, то выделение необходимо.
1
|
08.08.2010, 15:58 | 636 | |||||
Когда задаёшься подобными вопросами с указателями, то мысленно представь себе такой код.
1
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
||||||
08.08.2010, 16:09 | 637 | |||||
MikeSoft, Evg, ну вот, смотрите. Я хочу разбить данную строку на отдельные слова (последовательности символов без пробела) и загнать каждое слово в соответствуещий элемент массива. Но программа застревает... В чем дело??
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
08.08.2010, 16:16 | 638 |
nikkka, а зачем было писать свой класс для работы со стеком?
Добавлено через 2 минуты забудь про массивы, используй std::vector(а лучше std::list).
0
|
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|
08.08.2010, 16:32 | 639 |
nikkka, проблема в том, что память для хранения не была выделена.
Вот вам небольшой примерчик по выделению: Выделение динамической памяти для двумерного массива. Тема о разбиении строки на слова уже поднималась: Разделить строку на слова, Разбить строку на массив слов, https://www.cyberforum.ru/cpp-... 09904.html
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
08.08.2010, 16:36 | 640 | |||||
2
|
08.08.2010, 16:36 | |
08.08.2010, 16:36 | |
Помогаю со студенческими работами здесь
640
Проверить на правильность и закомментировать весь код для лучшего понимания Нужны задачи для тренировки Нужны задачи для тренировки Нужны задачи для тренировки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |