Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 7

Программа, которая заменяет в программе на С++ операторы switch на if. else if

28.01.2016, 22:01. Показов 2805. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Задали курсовую работу - сделать задачу, суть которой находится в заголовке(Чтобы в программе заменялось switch на if... else if). Если честно, то вообще не понимаю как подобное действие осуществить. Были мысли о том, что нужно какое-то условие в программе, при выполнении которого будет выполняться замена. Быть может некий поиск оператора? Допустим, если в задаче находится оператор switch, то его заменяет программа на if. Но я не знаю как такое выполнить в виде кода. Помогите, пожалуйста, кто имел с подобными "Преобразованиями" дела. Или же, если кто натыкался уже на готовую задачу, указать где можно оную раздобыть. Несколько дней убил на поиск информации о данной теме. Ничего полезного не смог отыскать.

Премного благодарен за помощь и советы!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2016, 22:01
Ответы с готовыми решениями:

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

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

Программа которая заменяет повторяющиеся слова
Приветствую всех,такая вот задачка у меня не получается.. Дан мне текст из 20 слов и надо чтобы он находил повторяющееся слово,а я уже...

36
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
29.01.2016, 12:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от avgoor Посмотреть сообщение
В догонку, попробуйте преобразовать в if это:

Не по теме:

А это вообще законно? За такое сажать нужно, как Володя Цепеш сажал!


Тогда нужно находить кейсы во вложенных блоках, которые не принажлежат вложенным свичам, превращать их в метки и прыгать в них через goto. Но ведь в таком случае поведение брейков относится к циклам и нас, в общем, не интересует.

А ведь ещё есть маза, что нужно сохранять состояние объекта только на момент входа в switch, то есть запоминать значение в локальную переменную и сравнивать только его.

И, вообще, вы всё слишком усложнаете, даже то, что я описал, тянет на зачёт, а если все ваши правки учесть, то это треть диплома получается.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.01.2016, 12:49

Не по теме:

Цитата Сообщение от icpu Посмотреть сообщение
А это вообще законно
если мне память не изменяет это пример из Страуструпа



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

Не по теме:

Цитата Сообщение от icpu Посмотреть сообщение
то это треть диплома получается
остальные 2/3 будет экономическое обоснование всего этого :D

0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
29.01.2016, 12:54
Цитата Сообщение от hoggy Посмотреть сообщение
и не забудь обработать #include
Я не думаю что ему надо скармливать программе код после предпроцессора!

ТС, ты уточни у препода что он в итоге хочет видеть? Если полностью автоматизированный процесс то это не реально (если бы было возможно, тога не нужны били программисты).
Если же частично автоматизированный, то я бы думал так:
1) сканируем текстовый файл и находим все свичи
2) меняем все что знаем как правильно поменять дабы не сломать все к чертям
3) все что осталось не обработано отдаем пользователю, на ручное исправление

n) Если хотим выпиндрится можно придумать еще некий справочник шаблонов куда будет заносится то что обработано пользователем.
0
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 7
29.01.2016, 13:10  [ТС]
Спасибо всем за советы! Но признаться честно, все равно проще с этим не стало. Даже наоборот. Видимо, препод погорячился, когда доверил такую задачу тому, кто раньше ничего сложнее калькулятора не делал
Цитата Сообщение от Mesteriis Посмотреть сообщение
ТС, ты уточни у препода что он в итоге хочет видеть?
Препод хочет задачу, как бы забавно не звучало. А что еще забавней, что уже все это завтра нужно уже сдавать. Естественно, продемонстрировать ему нечего. Так как я не могу найти препода ни в универе, ни дома, пытаясь дозвониться до него. Потому, возможности разузнать детали нету
0
29.01.2016, 13:15

Не по теме:

Цитата Сообщение от Ganxs Посмотреть сообщение
А что еще забавней, что уже все это завтра нужно уже сдавать.
ахахахах, тогда у тебя один вариант, найти и скачать. Интересная курсовая в начале семестра.

0
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 7
29.01.2016, 13:22  [ТС]
Цитата Сообщение от _Valera_ Посмотреть сообщение
тогда у тебя один вариант, найти и скачать
Если бы... Как уже сказал в самом посте - нигде нету подобной курсовой, даже статей аналогичных или со схожей тематикой :c
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
29.01.2016, 13:27

Не по теме:

Цитата Сообщение от _Valera_ Посмотреть сообщение
Интересная курсовая в начале семестра.
Скорее затянутая концовка предыдущего. Если так, советую выбирать род войск, пока есть время.



Цитата Сообщение от Ganxs Посмотреть сообщение
Препод хочет задачу, как бы забавно не звучало.
Ты выпиши на листочик наши замечания и прочитай ему. В зависимости от используемого IDE (M$, Qt, embarcadero, etc) классы и библиотеки могут быть разными, но смысл один: регекспами находишь и меняешь. На самом деле, за недельку полной занятости можно написать. Если жопоручки не опускать.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.01.2016, 13:30
От препода нужно добиться входных данных, на которых программа должна работать, исходя из этого уже думать о реализации. Иначе действительно можно захлебнуться в этом.
0
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 7
29.01.2016, 13:33  [ТС]
Цитата Сообщение от icpu Посмотреть сообщение
Ты выпиши на листочик наши замечания и прочитай ему. В зависимости от используемого IDE (M$, Qt, embarcadero, etc) классы и библиотеки могут быть разными, но смысл один: регекспами находишь и меняешь
Я про эту задачу ему скажу все же, однако, видимо, придется делать что-то попроще из заданий, чтобы не с пустыми руками идти
0
29.01.2016, 16:38

Не по теме:

Цитата Сообщение от icpu Посмотреть сообщение
Если так, советую выбирать род войск, пока есть время.
та ладно, из-за курсача... вон у меня долги почти по всем предметам, и нормально живу, не ходил и не хожу)




Не по теме:


Цитата Сообщение от Ganxs Посмотреть сообщение
чтобы не с пустыми руками идти
отчет скопируй где-то, и кода накидай за ночь, что б хоть более-мене простейший разбор делало. В принципе вполне возможно. Мне тоже, надо было написать за 2 часа, разбор директив препроц и макросов для шейдерного языка, ниче успел г*код накидать, работало. Хотя это задание сложнее, если учесть все что тебе тут написали...

0
29.01.2016, 17:07

Не по теме:

Цитата Сообщение от _Valera_ Посмотреть сообщение
г*код накидать
5 лет в универе убедили меня, что всем глубоко по. О качестве кода там слышали ровно столько же, сколько о современных средах разработки и о новых стандартах языков.

0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
29.01.2016, 17:49
Ganxs, берись - кажется сложно.
не решишь на следующую курсовую перенесешь.
в нормальных вузах компиляторы в качестве курсовых пишут и ничего.
PCRE2 библиотека под обычную Visual Studio Community.
регулярками легко получать '#switch(.*?){#'
но, одними регулярками не обойтись, тк вложенные конструкции не пройдешь регулярками, хотя жадным квантификатором можно... надо пробовать, "крутить", да и посмотреть как компиляторы пишутся.
имхо интересно - я б за такое взялся, если б препод дал.
switch найти легко, дальше, по-любому, (выражение), потом '{' , потом case конст_знач: - от case до ':' тоже понятно чего и так пошел что от case до ':' минус пробелы выражение для сравнения с тем, что получил в switch, что после case: либо case, либо операторы их тоже в стек можно, а потом выталкивай из стека и в if оборачивай. сначала анализатор может быть попробовать, чтобы посчитать вложенность и под эту вложенность создать структуру - ничего прям ахового нет - нормальное задание. тем более, думается мне, препод скорее всего даже вложенные структуры и не попросит рассматривать.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
29.01.2016, 18:11
Цитата Сообщение от SergioO Посмотреть сообщение
в нормальных вузах компиляторы в качестве курсовых пишут и ничего.
Компилятор C++ в качестве курсовика?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2016, 19:06
Цитата Сообщение от Mesteriis Посмотреть сообщение
Я не думаю что ему надо скармливать программе код после предпроцессора!
напротив жеж.
именно после препроцессенга имеем единый файл единицы трансляции
в котором уже нет никаких #include, макросов, и тп.

Цитата Сообщение от Ganxs Посмотреть сообщение
завтра нужно уже сдавать
1.
действуем по принципу 80 за 20.
то бишь, забиваем болт на все сложности.
никаких нафиг препроцессоров, инклюдов и мутных свитч-кейсов.

исходим из предположения, что свитч-кейс будет тупой как валенок.
далее:
http://www.cplusplus.com/reference/regex/

за пару часов с большими перекурами можно осилить.

2.
если осталось время:
качаем/ставим cmake.
и долбим форумы: как сварганить сценарий сборки так,
что бы компилятор не компилировал исходник,
а только отпрепроцессировал.
есть у компиляторов такие ключи.

дальше пишем код запуска cmake из нутрях вашей программки.
натравливая его на исходники исследуемого кода.

получаем портянки без препроцессора.

дальше см пункт 1.

3.

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

но это уже маловероятно.
-----------------------------

цемес в том, что бы при самом неудачном раскладе было хоть что-то,
что можно показать.

и скорее всего парсинг простых свитч-кейсов уже потянет если не на зачет,
то хотя бы на разрешение доработать продукт.
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
29.01.2016, 19:12
Цитата Сообщение от avgoor Посмотреть сообщение
Компилятор C++ в качестве курсовика?
нет же что-нибудь простенькое
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
29.01.2016, 19:14
Цитата Сообщение от SergioO Посмотреть сообщение
нет же что-нибудь простенькое
Так о то ж.
0
29.01.2016, 20:23

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2016, 20:23

Программа, которая заменяет символы в слове местами
Необходимо составить программу, которая будет заменять символы в слове местами. Например, фразу "Привет. Как дела?!" в ней...

Составить программу, запрашивающую ваш рост и вес, которая далее рассчитывает индекс массы тела (операторы SWITCH-CASE)
Необходимо составить программу запрашивающую ваш рост и вес, далее рассчитывает индекс массы тела (bmi), выдает его значение и определяет...

Программа, которая ищет по файлам и заменяет там текст
Может кто написать вот такую программу, или хотябы натолкнуть на мысль как ее написать ? : Есть множество файлов с расширением например...

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

Программа, которая заменяет все буквы «е» во введенном тексте на букву «u»
Всем привет!) помогите решить задачку. Разработать программу, которая заменяет все буквы «е» во введенном тексте на букву «u». Заранее...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru