LINUX.ORG.RU

Двунаправленный список на Си.

 


0

1

Здравствуйте. Являюсь начинающим в разработке на языке Си, и столкнулся с проблемой в решении следующей задачи: Для решения задачи сформируйте двунаправленный список. Дана последовательность латинских букв, оканчивающаяся точкой. Среди букв есть специальный символ Ch, появление которого означает отмену предыдущего символа. Учитывая вхождение этого символа, преобразуйте последовательность.

На бумаге всё проще простого, но с реализацией на Си есть проблемы. Можете предложить свой пример решения? Всё в статике, никаких динам. массивов и тд. maxsize взять за 100



Последнее исправление: LokiGG (всего исправлений: 1)

Ответ на: комментарий от ugoday

Представьте себе. Компиляторов лиспа не существует и существовать не может. Некоторые из них умеют создавать бинарный исполняемый файл, только вот незадача, в них вшивается интерпретатор или бинарник требует библиотеку-интерпретатор.

Почему это кому-то не очевидно, если в языке есть eval?

zx_gamer ★★
()
Ответ на: комментарий от zx_gamer

Нафиг писать программу на Си, если не оптимизировать её?

Программа должна:

  1. Работать правильно.

  2. Работать безопасно.

  3. Работать быстро.

Так что до третьего этапа ещё дожить надо, а это не у всех получается. Да и даже если вышло, то оптимизировать нужно не всё подряд, а только критический участок кода. Так что неоптимальный код на С вполне имеет для себя нишу.

ugoday ★★★★★
()
Ответ на: комментарий от AntonI

А кто нибудь обратил внимание что ТС уже давненько молчит? Лично я начинаю метаться между гипотезами (а) сдал таки контрольную, или (б) - потирает ручки и смеётся :)

bugfixer ★★★★★
()
Ответ на: комментарий от zx_gamer

Я сейчас от этого далек, но емнип когда то были лисп-машины с чуть ли не в железо зашитым лиспом? Евал кстати может быть и в компиляторе вполне - просто он свой аргумент интерпретирует. В плюсы же встраивают всякие байтмашины иногда, сам этим грешу.

Кстати один из лоровцов, очень уважаемый лиспер, прошивал на лиспе плис (fpga) для минимизации латентности при электронных торгах. Ну у них там денег в США много, могут и плисок накупить полный машзал.

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 2)
Ответ на: комментарий от ugoday

Так что неоптимальный код на С вполне имеет для себя нишу.

Накину таки на вентилятор - вы действительно считаете что то что вы предлагали несколько страниц назад хотя бы приближается к оптимальному алгоритмическому решению безотносительно выбранного языка?

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

На олимпиаде или экзамене — нет, определённо не является оптимальным ни по какому критерию. А вот в реальной жизни именно так и надо писать. Понятность и безопасность важнее скорости. Насчёт понятности вы можете спорить, тут тема субъективная, но в функциональщине идиома map/filter/reduce занимает то же место, что и паттерны проектирования в ООП. Видит человек абстрактную фабрику синглетонов fold-right и сразу понятно, чего автор сказать хотел. А вот безопасность вещь объективная, в данном коде выход за границы или обращение к несуществующему элементу последовательности невозможны в принципе. По построению. А вот если вы будете в цикле по индексам массива ходить, то единственный способ удостовериться, что хакеры не украдут все наши секреты, это внимательно прочитать тело цикла глазами строчка за строчкой.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

в данном коде выход за границы или обращение к несуществующему элементу последовательности невозможны в принципе.

С Вашим то талантом и не такое возможно…

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

Шо, в лиспе нету проверки попадания индекса в заданный диапазон?!

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от ugoday

А вот в реальной жизни именно так и надо писать.

Эвона как.

Понятность и безопасность важнее скорости.

Вы хоть раз слышали выражение «волка ноги кормят»? Не, я на самом деле только за - чем больше у вас последователей тем больше «икорки» нам достанется… Так что - дерзайте! :-)

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

Если контрольную, то вряд ли сдал. Там очевидно, что задание не про то, чтобы код написать, а задать минимум четыре вопроса:
1. Отменят ли ch точку?
2. Как обрабатывать несколько ch подряд?
3. Что делать если ch первым символом идет?
4. Во что преобразовать последовательность?

ya-betmen ★★★★★
()