|
динамический #define
|
|||
---|---|---|---|
#18+
Ой, только не спрашивайте зачем мне эта хрень.... абсурд, конечно, но надо для решения одной задачи ! Итак, есть ли возможность создать define по алгоритму, если есть, то как? скажем есть у меня простой дефайн: Код: plaintext 1.
и мне необходимо создать другой дефайн пусть будет ему имя "test" содержимое которого создавалось бы по алгоритму : при встрече в коде программы test подменится на int i1=0; int i2=0; int i3=0; int i4=0;... int iN=0; N раз Пример: при N=7 схематично код выглядел бы примерно вот так : Код: plaintext 1. 2. 3. 4. 5. 6.
на самом деле эта подмена кажется абсурдом и бестолковщиной, но я алгоритм подмены упростил, чтобы не сильно грузить. мне ценна суть реализации. p.s. хотелось бы это в рамках Си без плюсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 22:34 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, А как предполагается работать с определенным через макрос набором переменных? Если n конечно то имхо данное объявление можно реализовать через #if и #elif продублировав столько раз сколько необходимо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 23:35 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
→ Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 23:36 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 на самом деле эта подмена кажется абсурдом и бестолковщиной, но я алгоритм подмены упростил, чтобы не сильно грузить. мне ценна суть реализации. Я думаю этого делать не нужно на дефайнах. Будешь долго мучится, а на выходе какое-то фуло выйдет. Лучше напиши кодогенератор на обычном Си и генерируй хоть чёрта лысого. Как два байта переслать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 23:47 |
|
динамический #define
|
|||
---|---|---|---|
#18+
L.Otujktd Если n конечно то имхо данное объявление можно реализовать через #if и #elif продублировав столько раз сколько необходимо Разумеется N конечное оно задается в макросе я это писал. вот и мне интересно как циклом сконструировать дефайн ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 08:45 |
|
динамический #define
|
|||
---|---|---|---|
#18+
a guest Код: plaintext 1. 2. 3. 4. 5. 6.
→ Код: plaintext 1.
вот это наверно круто ! но подключить вот это: boost/preprocessor/repetition/repeat.hpp мне пока не по зубам. где вы это берёте ? что-то гугль не помогает ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 08:55 |
|
динамический #define
|
|||
---|---|---|---|
#18+
petrav andron81 на самом деле эта подмена кажется абсурдом и бестолковщиной, но я алгоритм подмены упростил, чтобы не сильно грузить. мне ценна суть реализации. Я думаю этого делать не нужно на дефайнах. Будешь долго мучится, а на выходе какое-то фуло выйдет. Лучше напиши кодогенератор на обычном Си и генерируй хоть чёрта лысого. Как два байта переслать. полагаю repeat.hpp это и есть кодгенератор ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 08:56 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Автор напиши на Python динамический фрагмент кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 09:36 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mayton Автор напиши на Python динамический фрагмент кода. этого мне ещё не хватало. ))) ну емоё ведь пишут же "stdarg.h", а он на макросах ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 09:53 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, boost/preprocessor внутри использует собственный фреймворк для работы с кортежами лексем, ну а BOOST_PP_REPEAT помимо этого еще и реализован через копипаст сотен однотипных define, которые наверняка через вспомогательный генератор сделаны. Поэтому сделать то же самое с нуля без внешнего генератора будет непросто. Намного проще как выше советовали сделать генератор, который будет данный код генерить. Ну и главное. Зачем? Ведь все это не нужно если применить массив. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 10:05 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Зачем? Ведь все это не нужно если применить массив. Код: plaintext 1. 2. 3.
я ожидал тут такие ответы. ))) Зачем ? ну затем . НАДО ! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 10:41 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, отбой . нашёл способ решения проблемы ! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 10:50 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, >Зачем? >Ведь все это не нужно если применить массив. +1 )) Если вам нужно много динамики или генератор, задумайтесь...) посчитайте до 10...отложите до утра... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:43 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 mayton Автор напиши на Python динамический фрагмент кода. этого мне ещё не хватало. ))) ну емоё ведь пишут же "stdarg.h", а он на макросах Я не уверен что юзкейс применения макросов "там" - тот что тебе нужен. Макросы - это вобщем-то самый простой механизм для расширения возможностей языка. Их специально сделали простыми. Без рекурсий и циклов в фазе трансляции. Твоя задача ... хм... в некотором роде выходит за рамки простой замены. И вызввает вопросы такие как "проблема остановки" и прочее. И если ты хочешь поверх макросов поднять новый язык программирования - то тебе точно не в макросы. Или в другие макросы. Там... макросы Lisp например. Но это далеко нас уводит от темы С++ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:49 |
|
динамический #define
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Anatoly Moskovsky, >Зачем? >Ведь все это не нужно если применить массив. +1 )) Если вам нужно много динамики или генератор, задумайтесь...) посчитайте до 10...отложите до утра... задача такова , что мне надо прогнать кучу sscanf (string,pattern1, setofVar ); по циклу с разным параметром pattern1 (с его формированием проблем нет) и с соответствующим набором параметров setofVar . Проблема только в setofVar . мне этот набор надо задавать динамически исходя из параметра N. видимо это задача и не для макросов тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 12:08 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 petrav пропущено... Я думаю этого делать не нужно на дефайнах. Будешь долго мучится, а на выходе какое-то фуфло выйдет. Лучше напиши кодогенератор на обычном Си и генерируй хоть чёрта лысого. Как два байта переслать. полагаю repeat.hpp это и есть кодгенератор ? Ну... можно и так сказать. Но сделан он на таких жутких и противоестественных приёмах программирования — вы это даже представить себе не можете. Это не пример для подражания. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 12:09 |
|
динамический #define
|
|||
---|---|---|---|
#18+
petrav, весь этот "велосипед" исходя из условия задачи из K&R. а я дотошный как просят так выполняю. вот эта задача : "Перепишите основанную на постфиксной записи программу калькулятора таким образом, чтобы для ввода и преобразования чисел она использовала scanf и/или sscanf." как работает калькулятор ? он требует ввода от пользователя строки вида "10 30 + 90 70 - *" ,разносит числа в стек(на самом деле в массив) , а затем достает числа, производит операции и результат опять заносится в стек. более глубокие подробности не очень важны. Важно то, что теперь требуют использовать scanf и/или sscanf. то есть я полагаю, что необходимо считать строку scanf("%s",str), а потом "тупо" при помощи sscanf разнести по переменным (лучше всего в качестве переменных использовать элементы двух массивов с типами int (для чисел) и char (для +, *, / , -) ). как я вижу решение : 1. оговариваем сколько максимально параметров может быть . Пусть это дефайн N 2. нужно сформировать все различные паттерны исходя из N , скажем для примера это шаблон : "%d %d %c %d %d %c %c" и другие ... 3. затем подвергаем введенную строку анализу , для этого делаем череду : sscanf(s,pattern1, набор параметров исходя из pattern1 ) sscanf(s,pattern2, набор параметров исходя из pattern2 ) sscanf(s,pattern3, набор параметров исходя из pattern3 ) sscanf(s,pattern4, набор параметров исходя из pattern4 ) ... sscanf(s,patternU, набор параметров исходя из patternU ) эти sscanf можно прогонять в цикле пока какой-то из них даст что-то отличное от 0. проблема состоит лишь в третьем параметре - набор параметров. я этот набор не могу формировать динамически. Всё это безумие ? ДА. но так я вижу реализацию . так как требуют использовать sscanf и scanf. конечно, я могу сделать куда более рациональней и без всяких сложностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 12:55 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81Проблема только в setofVar . мне этот набор надо задавать динамически исходя из параметра N. Используй массив. Заодно избавишься от переменного числа параметров у функции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:00 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, обрати внимание что *scanf возвращает целое число - количество заполненных значений. Используй его. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:09 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81Всё это безумие ? ДА. но так я вижу реализацию . Этим и отличается нуб от опытного программиста. Первый видит одну реализацию и утыкается в неё, второй - несколько вариантов реализации и выбирает из них оптимальный. Подсказка: элементы строки не обязательно читать все за раз. scanf способен остановиться после первого и продолжить со второго при следующем вызове. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:10 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov andron81Проблема только в setofVar . мне этот набор надо задавать динамически исходя из параметра N. Используй массив. Заодно избавишься от переменного числа параметров у функции. длина массива задается вверху макросом (#define N=123) и программа должно подстраиваться исходя из этого N а то, что массив надо использовать это однозначно. причем их должно быть в количестве 2. но в ссканф все равно статично придется статично подставлять его элементы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:13 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mayton andron81, обрати внимание что *scanf возвращает целое число - количество заполненных значений. Используй его. знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:14 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81длина массива задается вверху макросом (#define N=123) и программа должно подстраиваться исходя из этого N а то, что массив надо использовать это однозначно. причем их должно быть в количестве 2. но в ссканф все равно статично придется статично подставлять его элементы. Исходя из поставленной задачи: а) Программа не должна подстраиваться и макрос не нужен. б) Массива достаточно одного, причём лучше ему быть не массивом, а списком. в) Да. Причём это будет ровно один элемент: следующее значение операнда. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:23 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 petrav, весь этот "велосипед" исходя из условия задачи из K&R. а я дотошный как просят так выполняю. вот эта задача : "Перепишите основанную на постфиксной записи программу калькулятора таким образом, чтобы для ввода и преобразования чисел она использовала scanf и/или sscanf." Я даже не стал дочитывать постановку задачи. Керниган и Ритчи не могли предложить вам решать задачу таким способом как вы хотите. Вы что-то недопоняли в книге, нужно перечитать. И Сибиряков уже написал как нужно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 13:24 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov andron81Всё это безумие ? ДА. но так я вижу реализацию . Этим и отличается нуб от опытного программиста. Первый видит одну реализацию и утыкается в неё, второй - несколько вариантов реализации и выбирает из них оптимальный. Подсказка: элементы строки не обязательно читать все за раз. scanf способен остановиться после первого и продолжить со второго при следующем вызове. звучит годно , но он не продолжает, или я неверно тебя понимаю : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 14:42 |
|
динамический #define
|
|||
---|---|---|---|
#18+
petrav, они и не предлагали . они решали задачу о разнесении введенной даты в переменные по средствам sscanf : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
где функция getline чтение из потока строки (до того как встретиться \n) поэтому в этой задаче я решил пойти подобным путем. только паттернов больше будет и sscanf. поэтому динамически планировал их делать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 14:58 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 лучше всего в качестве переменных использовать элементы двух массивов с типами int (для чисел) и char (для +, *, / , -) IMHO Если понять, что "элементы двух массивов с типами int (для чисел) и char" полный бред, то желание использовать scanf так же пропадет. Должно быть не два массива, а "токен" с типом: или константа (на самом деле, __операция__ записи числа в стек) или арифметическая операция (извлечение чисел из стека, выполнения операции над числами, запись результата в стек) Соответственно scanf ничем помочь не сможет и он не нужен. Нужна ф-ция определяющая тип токена по его содержимому, можно для начала вообще какой нибудь гуано-код на if сделать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
p.s. На C давно не писал, т.ч. могу ошибаться p.p.s. Сам бы я на if делать не стал бы, но для первого приблежения мне кажется сойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:04 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81или я неверно тебя понимаю Да. С какого-то перепою ты scanf прочитал как sscanf. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:06 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а разница ? одна читает из потока, вторая из строки. Ну ладно, сейчас переделаю на scanf ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:18 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, scanf передвигает указатель потока на конец прочитанных данных sscanf ничего не передвигает, поэтому его неудобно использовать для поэлементного чтения строки (надо вручную считать смещение с которого надо продолжать) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:32 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky надо вручную считать смещение с которого надо продолжать см. параметр %n в sscanf ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:37 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovskyего неудобно использовать для поэлементного чтения строки (надо вручную считать смещение с которого надо продолжать) man говорит, что есть шаблон %n, который способен это сделать за тебя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:39 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov man говорит, что есть шаблон %n, который способен это сделать за тебя. Да, я выше написал. Но это нужна адресная арифметика, самое то для новичков )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:56 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а как ваще ? у меня 2 разных шаблона это 1.%d или как вы хотите %n (мне тоже с ним не повезло) 2.%с я читаю "пообъектно" поток (под объектом будем подрузамевать или число или символ + * / - ) когда читается объект scanf() с шаблоном %n (- тут указана интовая переменная для сохранения), а объект оказался например символьной и в результате этот объект нигде не сохранен и утерян... следующий scanf его уже не прочитает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:06 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, %n надо использовать в том же вызове sscanf. Код: plaintext 1. 2. 3. 4.
Для scanf он вообще не нужен. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:15 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81а как ваще ? Моск включить, чтобы не тупо повторять всё, что тебе говорят, а ещё и понимать смысл, скрытый за соловами. scanf и %n две взаимозаменяемые вещи, а не совместно используемые. выше тебе уже код привели. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:17 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Для scanf он вообще не нужен. Код: plaintext 1. 2. 3.
ваш цикл будет выполняться пока в потоке числа идут, а если + * / - , то этот символ никуда не сохранится потому что n-интовая переменная наверно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:21 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Да но это не то, что я хотел бы увидеть. так и я умею. это тупое сливание объекта в "строку" и анализ на предмет какой это природы. я предполагал , что использовав sscanf можно слить непосредственно в переменные исходя из шаблона: что - то вроде вот этого примера из K&R Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:31 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 ...что - то вроде вот этого примера из K&R Примера как НЕ надо делать? http://lib.ru/ANEKDOTY/osterwred.txt ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:39 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andron81 ...что - то вроде вот этого примера из K&R Примера как НЕ надо делать? http://lib.ru/ANEKDOTY/osterwred.txt В книге и разобрана эта задача ранее токенами и читалось getchar ом. Ясен болт, что при помощи scanf и sscanf наверно не очень прикольно делать. Ну уж извините меня, что выбрал не ту книгу в которой только что пример был смотреть ввше и сделать просили именно scanами, и я буду иметь ввиду, что для вас K&R два маразматика. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 16:49 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 и сделать просили именно scanами Можно ссылку на книгу и страницу с оригинальной постановкой задачи. В Вашем сообщении, два момента, которые "бредовые" 1. парсинг с помощью scanf один токен преобразовать элементарно, банально заменив atoi на sscanf - зачем, не очень понятно, но можно. парсить все выражение - какой-то безумство. Начиная с "оговариваем сколько максимально параметров может быть . Пусть это дефайн N", одно это все решение преврашает в какой-то .... (цензурных слов не находится) Сомневаюсь, что бы K&R были настолько садисты по отношению к пользователям. 2. даже если Вы отпарсите, как хотите, счастье это принести НЕ может. Т.к. ДВА разных массива с операндами и операциями это НЕ калькулятор, а какая-то помойка. Важен порядок следования операндов и операций, а он будет потерян. к примеру: 10 30 + 90 70 - * = (10+30)*(90-70) = 800 а 10 30 90 70 + - * при вычисление на стеке это: 10 * (30-(90+70)) = -1300 как бы две большие разницы Т.ч. по всему топику, возникает два вопроса: 1) "Всё это безумие ? ДА" 2) "но так я вижу реализацию" реализацию ЧЕГО Вы так видите? Явно это НЕ "основанную на постфиксной записи программу калькулятора" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 17:22 |
|
динамический #define
|
|||
---|---|---|---|
#18+
K & R делали книжки: a) В Америки и для Америки, сейчас глобализация и их вольный подход к интерпритации строк в качестве дат дичь полнейшая. b) Мало того, предположу, что кроме K & R над книжкой еще "поработал" переводчик и возможно технический редактор (после переводчика). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 17:34 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 ваш цикл будет выполняться пока в потоке числа идут, а если + * / - , то этот символ никуда не сохранится потому что n-интовая переменная наверно. Все правильно. Потому что я не решение вашей задачи писал, а показывал как работает scanf/sscanf на абстрактном примере. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 17:56 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81я предполагал , что использовав sscanf можно слить непосредственно в переменные исходя из шаблона Теоретически можно. И я даже могу догадаться как, но попробуйте решить эту головоломку сами. Подсказка: в строке может быть только повторяющая последовательность из следующих шаблонов: %d %d %d %d %d %c %d %c %c Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 18:41 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Можно ссылку на книгу и страницу с оригинальной постановкой задачи. английской версией книги я не располагаю. я вам копипастил текст из книги. но если вы не верите, то вот: ссылка стр. 153 и выше пример с обработкой даты Leonid Kudryavtsev В Вашем сообщении, два момента, которые "бредовые" 1. парсинг с помощью scanf один токен преобразовать элементарно, банально заменив atoi на sscanf - зачем, не очень понятно, но можно. парсить все выражение - какой-то безумство. Начиная с "оговариваем сколько максимально параметров может быть . Пусть это дефайн N", одно это все решение преврашает в какой-то .... (цензурных слов не находится) Сомневаюсь, что бы K&R были настолько садисты по отношению к пользователям. я не отрицаю , что бредовые. но будь у #define возможности те о которых я запрашивал в самом начале думаю этот бред был бы реализуем. ну тут все точки над уже расставлены. Leonid Kudryavtsev 2. даже если Вы отпарсите, как хотите, счастье это принести НЕ может. Т.к. ДВА разных массива с операндами и операциями это НЕ калькулятор, а какая-то помойка. Важен порядок следования операндов и операций, а он будет потерян. к примеру: 10 30 + 90 70 - * = (10+30)*(90-70) = 800 а 10 30 90 70 + - * при вычисление на стеке это: 10 * (30-(90+70)) = -1300 как бы две большие разницы это не сильно относится к теме. я вам всем до какого-то момента про то что это постфиксный калькулятор вообще умалчивал, а потом пришлось. это всё для того чтобы вы не грузились лишним и не уходили не в то русло. Кроме вас кстати это никого и не взволновало. скажу одно, что для верной последовательности служил бы разбор подобранного шаблона . но даже если бы я и зашел бы в какой - нибудь косяк это был бы мой косяк, и я откатился бы назад, ничего в этом страшного нет. но повторюсь это другая тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 19:03 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev K & R делали книжки: a) В Америки и для Америки, сейчас глобализация и их вольный подход к интерпритации строк в качестве дат дичь полнейшая. это ваше мнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 19:09 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov %d %d %d %d %d %c %d %c %c проблем с формированием различных комбинаций шаблонов я не вижу. я вижу только то, что статично в скане надо подставить элементы массива в качестве параметров. а это можно сделать только или прописав их - значит их количество прописывается жестко, ну а 2 ой вариант динамический макрос который потерпел фиаско. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 19:22 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, Поищите в сети алгоритмы калькуляторов с поддержкой скобок и т.д. Очень простые и красивые. Они переводят выражение в естественном виде в польскую запись и там всё красиво вычисляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 19:24 |
|
динамический #define
|
|||
---|---|---|---|
#18+
petrav andron81, Поищите в сети алгоритмы калькуляторов с поддержкой скобок и т.д. Очень простые и красивые. Они переводят выражение в естественном виде в польскую запись и там всё красиво вычисляется. такая задача предо мной не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 19:29 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 я вижу только то, что статично в скане надо подставить элементы массива в качестве параметров. а это можно сделать только или прописав их - значит их количество прописывается жестко, ну а 2 ой вариант динамический макрос который потерпел фиаско. Из интернета: Если длина массива известна на этапе компиляции, то можно упаковать его в struct и передать pass by value. Сам так никогда не делал, ставить эксперименты и лень и не где. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 20:27 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andron81 я вижу только то, что статично в скане надо подставить элементы массива в качестве параметров. а это можно сделать только или прописав их - значит их количество прописывается жестко, ну а 2 ой вариант динамический макрос который потерпел фиаско. Из интернета: Если длина массива известна на этапе компиляции, то можно упаковать его в struct и передать pass by value. А если длина массива не известна на этапе компиляции, то можно ли его pass by value? Что там интернет говорит про это? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 20:49 |
|
динамический #define
|
|||
---|---|---|---|
#18+
и так понятно, что можно ключевое слово __asm никто не отменял ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 21:00 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Но вообще это даром не нужно, т.к. есть http://www.cplusplus.com/reference/cstdio/vsscanf/ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 21:27 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81проблем с формированием различных комбинаций шаблонов я не вижу. Не надо ничего формировать. Четыре шаблона я назвал, они жёсткие и фиксированные. Ничего дополнительного не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 22:02 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov andron81проблем с формированием различных комбинаций шаблонов я не вижу. Не надо ничего формировать. Четыре шаблона я назвал, они жёсткие и фиксированные. Ничего дополнительного не нужно. Ну можно было бы наверно примерять эти шаблоны последовательно, а "удачные" последовательности запоминать, а в случае неудачи откатывать поток в начало. Потом вспоминать все верные последовптелтности доходя до точки неудачи и примерить другой шаблон и тд... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 23:15 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, Вернее немного не так. Примеряем при помощи sscanf эти шаблоны последовательно. Если какой-то из шаблонов сработал, тогда заносим данные в стек, а строку режем и опять применяем алгоритм... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 23:57 |
|
динамический #define
|
|||
---|---|---|---|
#18+
если уже есть написанная программа для польского калькулятора с постфиксными выражениями, и по заданию парсить нужно с помощью scanf, то изменений там будет по минимуму. парсинг как был так и остается character by character вот как это должно происходить: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 01:19 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab если уже есть написанная программа для польского калькулятора с постфиксными выражениями, и по заданию парсить нужно с помощью scanf, то изменений там будет по минимуму. парсинг как был так и остается character by character вот как это должно происходить: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
это не круто совсем вырезать посимвольно при помощи scanf. для этого scanf и не нужен вовсе. scanf умеет вырезать целыми словами исходя из шаблона. как минимум надо решать вырезая по одному "слову" (слово это набор символов заключенных между пробелов) как предлагалось выше. но так тоже не сильно прикольно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 08:40 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Попсовая задача этот калькулятор. Надо-бы его где-то отдельно опубликовать. Без этих scanf а в концептуальном виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 11:29 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Но вообще это даром не нужно, т.к. есть http://www.cplusplus.com/reference/cstdio/vsscanf/ вот это я бы назвал решением с полноценным использованием scanf с учетом подсказок Сибирякова. Пусть у калькулятора есть 2 команды push и execute ну и pop которая используется в execute (эти функции описаны и интереса не представляют), которые выполняются исходя из "природы" поступаемых слов(слово это либо число, либо + * - /), тогда решение я считаю должно выглядеть примерно вот так : Код: plaintext 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.
вместо printf можно подставить команды push и execute ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 11:38 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81вот это я бы назвал решением Я бы назвал это фигнёй, которая упадёт на первом отрицательном операнде. Надо таки использовать %n. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 13:18 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Успокойтесь. Вещественные числа тоже провалятся если подходить строго. Я ограничился урезвнными возможностями. В книге калькулятор тоже не рубил отрицательные(работе с отрицательными надо было научить программу в упражнении), правда с вещественными он справлялся. Так или иначе это не так уже важно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 13:44 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov andron81вот это я бы назвал решением Я бы назвал это фигнёй, которая упадёт на первом отрицательном операнде. Надо таки использовать %n. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 14:36 |
|
динамический #define
|
|||
---|---|---|---|
#18+
1) Отрицательные числа в польской записи выглядят так: 0 10 - 2) в польской постфикс записи используется один единственный шаблон: число число оператор ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 15:50 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab 1) Отрицательные числа в польской записи выглядят так: 0 10 - 2) в польской постфикс записи используется один единственный шаблон: число число оператор 1) неважно, уже научили работать с отрицательными 2) а как же классический пример ? ? 2 6 + 3 8 - * ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:09 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 это не круто совсем вырезать посимвольно при помощи scanf. для этого scanf и не нужен вовсе. scanf умеет вырезать целыми словами исходя из шаблона. как минимум надо решать вырезая по одному "слову" (слово это набор символов заключенных между пробелов) как предлагалось выше. но так тоже не сильно прикольно :) я согласна, но это самое простое решение с минимальной модификацией уже написанного кода. из предложенных вариантов, я бы рассмотрела токены и комбинацию scanf("%d"), scanf("%c"). с шаблонами можно сделать прикольное решение через рекурсию, но придется заморачиваться со строками, и, приняв во внимание весь оверхед, это уже не выглядит так уж круто. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:10 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, я не углублялась в изучение польской записи, поэтому про классический пример ничего сказать не могу. просто вместо того, чтобы делать костыли, лучше объявить, что наш калькулятор с отрицательными числами работает так -10 = 0 10 - :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:14 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab, Короче можно закрывать. Решено хоть от главного вопроса отошли - такие костыли не потребовались. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:18 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, в любом случае, в постфикс польской записи, шаблон будет один, и это (число число оператор) (число может быть отрицательным и положительным) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:25 |
|
динамический #define
|
|||
---|---|---|---|
#18+
поясню: mini.weblab -10 = 0 10 - имеется ввиду, что при начальном вводе данных можно записывать математическое выражение из целых неотрицательных чисел, дальше, уже в числовом стеке, 0 10 - будет записано как -10 мотивация: если используется польский постфикс (machine oriented approach), то почему бы не записать отрицательное число в удобной нам форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 16:51 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab andron81, в любом случае, в постфикс польской записи, шаблон будет один, и это (число число оператор) (число может быть отрицательным и положительным) Я к тому, что классический пример польской записи(а надо немного углубиться :)) с вашим шаблоном не дружит. Здесь 2 раза выйдет применить ваш шаблон, а потм уткнемся в * 1 2 + 3 4 - * С отрицательными числами вас думаю все пончли. Но не велика проблема. Решается легко. Либо дейсвительно вашим способом, либо немного усовершенствовав код. Разве моя реализация с шаблонами уж очень сложна?и рекурсия как вы любите:) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 17:02 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, а давайте я все-таки попробую: 1 2 + 3 4 - * = 3 3 4 - * = 3 -1 * = -3 вот работа постфикса ( в данном случае не обсуждаем, как это запрограммировать на С :) ): поиск шаблона -> нашли -> посчитали -> записали результат: повторяем пока не останется одно единственное число ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 17:16 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab, Я понял. У вас подход другой. Но такие страсти не требуются. Калькулятор реализованный в k&r работает иначе чем вы думаете. В результате все проще. P. S. Вы таким образом описали реализацию самого калькулятора работающего по другому алгоритму отличного от того что у k&r :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2020, 17:38 |
|
динамический #define
|
|||
---|---|---|---|
#18+
вот что в итоге получилось, правда, со стэком я немного схалтурила :-) Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 02:13 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 mini.weblab, Я понял. У вас подход другой. Но такие страсти не требуются. Калькулятор реализованный в k&r работает иначе чем вы думаете. В результате все проще. P. S. Вы таким образом описали реализацию самого калькулятора работающего по другому алгоритму отличного от того что у k&r :)) Ага щас. Вот алгоритм приведенный в этой книге, ссылку на которую вы выше давали. Это ровно то что реализовано в коде у mini.weblab . Никаких множества паттернов для чтений нескольких чисел за один проход в нем нет, это ваша отсебятина )) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 10:56 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky andron81 mini.weblab, Я понял. У вас подход другой. Но такие страсти не требуются. Калькулятор реализованный в k&r работает иначе чем вы думаете. В результате все проще. P. S. Вы таким образом описали реализацию самого калькулятора работающего по другому алгоритму отличного от того что у k&r :)) Ага щас. Вот алгоритм приведенный в этой книге, ссылку на которую вы выше давали. Это ровно то что реализовано в коде у mini.weblab . Никаких множества паттернов для чтений нескольких чисел за один проход в нем нет, это ваша отсебятина )) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Да, только она сначала говорила про рекурсивную реализацию и про паттерн %d %d %c. А потом реалищовала примерно так как в книге. Читайте все, а не последние 2 сообщения раз хотите поумничать ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:19 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, И у нее 2 паттерна между прочим, если уж на то пошло 😂😂 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:31 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 Читайте все, а не последние 2 сообщения раз хотите поумничать ОК. Читаю все: andron81 2. нужно сформировать все различные паттерны исходя из N , скажем для примера это шаблон : "%d %d %c %d %d %c %c" и другие ... mini.weblab 1) 2) в польской постфикс записи используется один единственный шаблон: число число оператор Таким образом вы не только не помните что сами писали так еще и другим так какие-то претензии предъявляете ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:49 |
|
динамический #define
|
|||
---|---|---|---|
#18+
вам что платят за троллинг не пойму? andron81 2. нужно сформировать все различные паттерны исходя из N , скажем для примера это шаблон : "%d %d %c %d %d %c %c" и другие ... вот эта первоначальная моя идея давно уже потерпела фиаско . Потом Сибиряков подкинул другую с различными паттернами (раз уж я хотел завязать различные паттерны и более менее полноценно использовать возможности scanf/sscanf, а не просто sscanf("%c", &c ) и sscanf("%d", &d ) - такая реализация ежу ясна ) , что успешно и было мной реализовано mini.weblab 1) 2) в польской постфикс записи используется один единственный шаблон: число число оператор вот это подрузамевает шаблон "%d %d %c" . и где-то рядом она упоминала рекурсию. а потом она реализует примерно так как в книге. где в её реализации этот шаблон и рекурсия? к ней вопросы и адресуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 12:10 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81, скажу совсем в другом русле... дефайн история то не для си плас плас... в умных рекомендациях утверждают что получше будет типизация того, что мы задаём. ну типо статик каста. Оно как бы задаёт типизацию, и подлежит контролю со стороны компилятора. (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 12:21 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Никаких множества паттернов для чтений нескольких чисел за один проход в нем нет, это ваша отсебятина )) и где я говорил, что в её коде множество паттернов или один проход ? я её код ваще не комментировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 12:40 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Никаких множества паттернов для чтений нескольких чисел за один проход в нем нет, это ваша отсебятина )) И я не говорил, что в коде у K&R есть какие-то паттерны в калькуляторе. там даже scanf не используется. имелось ввиду, что принцип работы тот же , я его и использую (принцип : занес в стек, посчитал , нарисовал результат) - всё так кроме того как данные из строки вырезаются(это и есть суть всего этого топика). И сложилось впечатление, что человек стал описывать мне алгоритм работы калькулятора(причем алгоритм рекурсивный заявил, а строку хотел резать шаблоном "%d %d %c"), а потом реализовал зачем-то полностью причем реализация совпала с книжной (и нет ни рекурсии , ни заявленного шаблона). а теперь вы меня тролите вопросами за чужой код зачем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 13:41 |
|
динамический #define
|
|||
---|---|---|---|
#18+
andron81 И я не говорил, что в коде у K&R есть какие-то паттерны в калькуляторе. там даже scanf не используется. имелось ввиду, что принцип работы тот же , я его и использую (принцип : занес в стек, посчитал , нарисовал результат) - всё так кроме того как данные из строки вырезаются(это и есть суть всего этого топика). И сложилось впечатление, что человек стал описывать мне алгоритм работы калькулятора(причем алгоритм рекурсивный заявил, а строку хотел резать шаблоном "%d %d %c"), а потом реализовал зачем-то полностью причем реализация совпала с книжной (и нет ни рекурсии , ни заявленного шаблона). а теперь вы меня тролите вопросами за чужой код зачем-то. Просто вы не разделяете польскую постфикс запись и алгоритм для калькулятора, работающего по польской постфикс записи. Перед тем как писать алгоритм работы калькулятора, основанного на польской постфикс записи, нужно разобраться, как эта самая запись работает. Как я уже говорила, в основе польской постфикс записи лежит один единственный шаблон (число, число, оператор). После того как мы разобрались, как работает постфикс можно начать писать код. И естественно, первое, что приходит в голову, это решить задачу в лоб, т.е. использовать шаблоны и работать со строкой, что жутко неудобно, дальше мы думаем, что гораздо удобнее было бы работать с числами (а не заморачиваться со строками), и думаем как же это сделать? И тогда мы приходим к решению КР, т.е. мы записываем числа в стек и дальше для подсчетов используем наш шаблон (число число оператор). По поводу вырезать данные, я вам сразу сказала, что мне больше всего нравится вариант с токенами и scanf("%d"), scanf("%c"). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 21:14 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab По поводу вырезать данные, я вам сразу сказала, что мне больше всего нравится вариант с токенами и scanf("%d"), scanf("%c"). IMHO Он не "больше нравится", это единственный более менее вменяемый алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 21:29 |
|
динамический #define
|
|||
---|---|---|---|
#18+
mini.weblab Просто вы не разделяете польскую постфикс запись и алгоритм для калькулятора, работающего по польской постфикс записи. Перед тем как писать алгоритм работы калькулятора, основанного на польской постфикс записи, нужно разобраться, как эта самая запись работает. у меня с этим проблем нету. потому что алгоритм разжован в книге. b более того калькулятор реализован там же хоть и по средством getchar() mini.weblab Как я уже говорила, в основе польской постфикс записи лежит один единственный шаблон (число, число, оператор). в случае двухместных операций - да ! у нас все двухместные. mini.weblab И естественно, первое, что приходит в голову, это решить задачу в лоб, т.е. использовать шаблоны и работать со строкой, что жутко неудобно, дальше мы думаем, что гораздо удобнее было бы работать с числами (а не заморачиваться со строками), и думаем как же это сделать? И тогда мы приходим к решению КР, т.е. мы записываем числа в стек и дальше для подсчетов используем наш шаблон (число число оператор). По поводу вырезать данные, я вам сразу сказала, что мне больше всего нравится вариант с токенами и scanf("%d"), scanf("%c"). да, возможно , но вы написали вот это, а это похоже на рекурсивный алгоритм с использованием шаблона %d %d %c : mini.weblab а давайте я все-таки попробую: 1 2 + 3 4 - * = 3 3 4 - * = 3 -1 * = -3 а потом вы все же реализовали идей scanf("%d") и scanf("%c"). поэтому при общении с московским мне пришлось раскритиковать ваши комменты - не код (мне показалось, что вы проговорили один алгоритм , а реализовали при помощи scanf("%d") и scanf("%c")) но я был без претензий вообще пока меня не подтролили . я уже давно все выяснил и уже бы давно прикрыл бы тему, но нет же... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 21:55 |
|
динамический #define
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mini.weblab По поводу вырезать данные, я вам сразу сказала, что мне больше всего нравится вариант с токенами и scanf("%d"), scanf("%c"). IMHO Он не "больше нравится", это единственный более менее вменяемый алгоритм. у меня первично основная тема была это использование scanf и sscanf , а не постфиксный калькулятор. если бы второй вариант, то да вы правы. а с несколькими шаблонами лучше иллюстрирует тему scanf и sscanf. поэтому для меня моя реализация прикольней :) Вот в чем мои мотивы . ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 21:59 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017363]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 183ms |
0 / 0 |