21 / 1 / 1
Регистрация: 22.12.2013
Сообщений: 196
|
|
1 | |
Формула, по которой можно вычислить время наступления Рагнарека22.07.2014, 18:56. Показов 4361. Ответов 27
Метки нет (Все метки)
Рагнарек должен наступить с минуты на минуту. Но Один не знает, когда именно он наступит.
Локи, как самый умный, сказал Одину формулу, по которой можно вычислить время наступления Рагнарека. К сожалению, Одину с одним глазом сложно уследить за всеми скобками в выражении, поэтому он решил заменить скобки первого уровня на фигурные, а второго уровня – на квадратные, остальные же оставить круглыми. То есть выражение x * (y + (z * (5 + 3))) изменится на x * {y + [z * (5 + 3)]}. Но Один не умеет программировать, Один умеет драться, поэтому программу придется написать вам. Не гневите Одина. В первой и единственной строке входного файла указана формула, состоящая из букв латинского алфавита, знаков арифметических действий, пробелов, цифр и скобок. Гарантируется, что скобки образуют правильную скобочную последовательность. Длина формулы не превышает 105. Выведите эту строку в формате удобном для чтения Одину. Пример ввода 1 x * (y + (z * (5 + 3))) Пример вывода 1 x * {y + [z * (5 + 3)]}
0
|
22.07.2014, 18:56 | |
Ответы с готовыми решениями:
27
Как вычислить ячейку, в которой содержиться формула с вычислениями Укажите формулу, по которой можно определить время встречи Создание крутящейся стрелки, время вращения которой можно изменять в PHP файле Вычислить скорость, с которой бегун пробежал дистанцию, если известно время и расстояние |
Модератор
|
|
22.07.2014, 20:01 | 2 |
Вообще-то, Один - Бог мудрости и тайного знания (магии). За эти знания он в своё время и пожертвовал глаз, если мне не изменяет память. И уж кому как не Одину уметь программировать! )))
А драться все асы были не дураки, но особенно в этом отличились Тор и Один, да.
0
|
Бендерродригез
|
22.07.2014, 21:04
#4
|
0
|
Модератор
|
||||||
22.07.2014, 22:04 | 5 | |||||
Чё-то у меня скобки как-то в конце не так расставляются:
1
|
Master of Orion
|
||||||
22.07.2014, 23:27 | 6 | |||||
Имхо так проще
2
|
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
|
|
22.07.2014, 23:55 | 7 |
Psilon, а Вы не путаете уровень скобок (читай "вложенность" ) и нумерацию (порядковый) скобок в выражени?
попробуйте на таком контрпримере: A + (B * ((C + D) + (N+K))) * (A + B) * (D * (B - (C + (E+K))))
1
|
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
23.07.2014, 08:14 | 8 | |||||
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
||||||
23.07.2014, 08:54 | 9 | |||||
Один я не понимаю, что и зачем вы там навертели в такой простой задаче? Видимо, изучение С++ необратимо захламляет мозг ООПом и прочими высокими абстракциями...
Задачка-то чисто алгоритмическая, хоть на С++, хоть на C#, хоть на Паскале решается по одному принципу. Главное - продумать принцип. Для этого достаточно блокнота (бумажного).
Код
C:\UTIL\tcc>tcc.exe -Wall -run brackets.c * Suite the_suite: ...... 6 tests - 6 pass, 0 fail, 0 skipped (1 ticks, 0.001 sec) Total: 6 tests (15 ticks, 0.015 sec) Pass: 6, fail: 0, skip: 0.
1
|
Master of Orion
|
|||||||||||
23.07.2014, 09:14 | 10 | ||||||||||
Sergio Leone, okay, уговорили
Vtulhu, один я не понимаю, зачем вы пишете конструкции в таком стиле: Добавлено через 4 минуты Vtulhu, и у вас ятп неправильно работать будет, например, на такой строке
Добавлено через 1 минуту Mr.X, господи, 200 строк на элементарную задачу. У вас болезнь овер-инжинеринга
2
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|
23.07.2014, 09:33 | 11 |
Зачем regex? Зачем s.length? Зачем проверять символ на закрывающую скобку, даже если она открывающая?
И самое главное - неужели эта программа выдает правильный ответ? Еще раз напоминаю про блокнот (бумажный). Правильный ответ должен быть такой: A + {B * [(C + D) + (N+K)]} * {A + B} * {D * [B - (C + {E+K})]} Вот, прочтите статью, очень поучительно - http://habrahabr.ru/post/153225/ Добавлено через 9 минут Из любого правила есть исключения. Это, кстати, во многих коуд-гайдах прописано. Здесь вся строчка имеет один простой смысл, размазывать ее по строчкам - значит УХУДШАТЬ понимание. Впрочем, Вы и так, и эдак не поняли алгоритм (не только мой алгоритм, но и общий принцип, а может быть даже и ТЗ), судя по этому комментарию: Сколько стоит блокнот? Выделите из бюджета семьи 50р. Зато Вы (и работодатель) себя через неделю не узнаете.
0
|
Master of Orion
|
|
23.07.2014, 09:56 | 12 |
это неправильный ответ как бы. Читаем ТЗ во-первых при чем тут это? Во-вторых я в любом случае не согласен с автором, что я бы понял иронию, если бы вы сами могли читать задание нормально. А так - жаль, жаль, мимо.
0
|
698 / 105 / 19
Регистрация: 22.06.2014
Сообщений: 234
|
|
23.07.2014, 10:32 | 13 |
Для поиска разного рода вложенностей должна применяться рекурсия, имхо.
0
|
698 / 105 / 19
Регистрация: 22.06.2014
Сообщений: 234
|
|
23.07.2014, 11:06 | 15 |
А я совсем новичок, не понимаю про что вы говорите. Там про то, что всё вычислимое может быть вычислено рекурсией?
0
|
Master of Orion
|
|
23.07.2014, 11:23 | 16 |
Martein, если коротко, то да
Если сложно и точно, то классы вычислимых и общерекурсивных функций совпадают. Добавлено через 31 секунду Martein, с другой стороны это не отменяет факта, что какие-нибудь деревья намного проще обходить рекурсией, чем циклами. Добавлено через 47 секунд Кстати, на этом свойстве построено разворачивание хвостовой рекурсии в циклы в компиляторах. Теоретически любую рекурсию можно развернуть в цикл, но на практике компилятор недостаточно умен, чтобы развернуть что-то сложнее хвостовой
0
|
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
23.07.2014, 11:45 | 17 |
Ну, сравнение некорректное, так как у меня там еще и генерация тестовых строк. Да и, мне кажется, что ясность кода и минимальность строк в программе - вещи немного противоположные.
А так-то да, сам алгоритм вам короче удалось выразить. Возьмите на полке пирожок. Только зачем вы весь код в main поместили? От этого ваш успех несколько смазывается.
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|
23.07.2014, 12:28 | 18 |
Тогда согласен, был невнимателен. Казалось само собой разумеющимся, что скобки должны меняться циклически.
0
|
Master of Orion
|
|
23.07.2014, 13:53 | 19 |
согласен.
Однако ваш код в вертикальным форматированием абсолютно нечитаем. ИМО офк. спасибо за пирожок. А почему в main? А почему бы и нет? Дублированности кода нет, значит все правильно сделал. Это и называется овер-инжинерингом "а вдруг кому-нибудь понадобится эта функция, вынесу её отдельно". В результате код гнется не там, где надо, и миллиарды функций разбросано, которые используются каждая один раз.
0
|
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
23.07.2014, 14:24 | 20 |
Ну, это индивидуально. Вообще, я заметил, что мой код никого не оставляет равнодушным. Одним он резко нравится, другим так же резко нет.
А можете пояснить что это означает? Ну, на мой взгляд как-то очень не того. В других языках по-моему так вообще не делают. Да и из сишников я думал только студенты-недоучки. Хотя и в книгах подобное встречается.
0
|
23.07.2014, 14:24 | |
Помогаю со студенческими работами здесь
20
Как можно рассчитать вероятность наступления следующего события? Создать пользовательскую форму, с помощью которой можно вычислить значение функции Создайте пользовательскую форму, с помощью которой можно вычислить значение функции пользователя Можно ли вычислить приблизительное время работы программы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |