Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / не знаю как решить эту задачу!! помогите пожалийста!! / 21 сообщений из 21, страница 1 из 1
27.05.2013, 17:35
    #38275260
druce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Составить программу, реализующую алгоритм, преобразующий произвольное положительное число, записанное в арабских цифрах, в систему римских цифр и наоборот.
...
Рейтинг: 0 / 0
27.05.2013, 17:58
    #38275313
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
http://ru.wikipedia.org/wiki/Римские_цифры
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.05.2013, 19:40
    #38275421
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
1. разбираемся в правилах записи римских чисел
2. одних только правил для написания проги мало. Надо придумать алгоритм
3. реализуем этот алгоритм на С. Только на этой фазе начинается работа с си.
4. радуемся.

по всей видимости, вы прошли только пункт 1, и сразу пытаетесь сделать пункт 3. Так можно, но не в процессе обучения. Не пропускайте п.2.
...
Рейтинг: 0 / 0
27.05.2013, 19:46
    #38275428
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
...
Рейтинг: 0 / 0
27.05.2013, 20:15
    #38275450
druce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
уважаемый Dimitry Sibiryakov,
Римские цифры знаю,мне надо самый программ
...
Рейтинг: 0 / 0
27.05.2013, 20:19
    #38275456
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
druce,

код на с++ легко ищется в гугле
...
Рейтинг: 0 / 0
27.05.2013, 20:22
    #38275458
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
druce,

Прочитай: 12553838
Если ты выбираешь первый путь: озвучь цену которую ты готов заплатить.
Если второй путь: сделай что-нибудь, докажи что ты хочешь научиться.
В любом случае: перестань канючить.
...
Рейтинг: 0 / 0
29.05.2013, 08:26
    #38277786
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
druceСоставить программу, реализующую алгоритм, преобразующий произвольное положительное число, записанное в арабских цифрах, в систему римских цифр и наоборот.
Я бы на месте автора пошёл по пути, подобному разработке парсера арифметических выражений, поскольку эти задачи выглядят подобными. Т.е. составил бы BNF грамматику и на её основе написал реализацию.
...
Рейтинг: 0 / 0
29.05.2013, 10:32
    #38277948
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
CompositumdruceСоставить программу, реализующую алгоритм, преобразующий произвольное положительное число, записанное в арабских цифрах, в систему римских цифр и наоборот.
Я бы на месте автора пошёл по пути, подобному разработке парсера арифметических выражений, поскольку эти задачи выглядят подобными. Т.е. составил бы BNF грамматику и на её основе написал реализацию.

За творческий подход я был поставил тебе 5, а за выбор его в качестве решения этой задачи влепил бы 1 с принудительной отправкой на картошку.
...
Рейтинг: 0 / 0
29.05.2013, 10:37
    #38277964
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Анатолий ШироковЗа творческий подход я был поставил тебе 5, а за выбор его в качестве решения этой задачи влепил бы 1 с принудительной отправкой на картошку.
Сказал "А", говори "Б": каков твой вариант решения, "учитель"?
...
Рейтинг: 0 / 0
29.05.2013, 13:14
    #38278336
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
CompositumАнатолий ШироковЗа творческий подход я был поставил тебе 5, а за выбор его в качестве решения этой задачи влепил бы 1 с принудительной отправкой на картошку.
Сказал "А", говори "Б": каков твой вариант решения, "учитель"?
Думаю потому-что парсер арабских цифр - задача вырожденная. Неинтересная и надуманная.
Их парсить не нужно. Любой scanf уже всё делает за нас. Обратная задача (парсинг римских цифр) тоже
вобщем-то необязателная. Простые строковые операции и проверки условий решают всё. Тоесть
парсер и конвертер воплощены в одной неразделимой логике.

Полноценный парсер нужен тогда когда мы грамматику развешиваем на узлах дерева.
У нас никакого дерева нет. Римское число - плоское и не обладает какой либой
интересной грамматикой.
...
Рейтинг: 0 / 0
29.05.2013, 13:24
    #38278351
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
maytonДумаю потому-что парсер арабских цифр - задача вырожденная. Неинтересная и надуманная.
Их парсить не нужно. Любой scanf уже всё делает за нас.
Я не для этого предлагал BNF, т.к. арабские, понятное дело, следует получать с помощью std::cin. Я предлагал для парсинга римских.
...
Рейтинг: 0 / 0
29.05.2013, 13:31
    #38278371
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Compositum,

для проверки валидности римского числа думаю достаточно будет регулярных выражений.
Это если вообще ставить себе такую задачу -- проверять входные данные.

Из википедии:

ВикипедияНатуральные числа записываются при помощи повторения этих цифр. При этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая — перед большей, то меньшая вычитается из большей (принцип вычитания). Последнее правило применяется только во избежание четырёхкратного повторения одной и той же цифры.


Для каждой римской цифры известен её номинал N -- вес в 10-ой системе.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
римские цифры
1 	I 	лат. unus
5 	V 	лат. quinque
10 	X 	лат. decem
50 	L 	лат. quinquaginta
100 	C 	лат. centum
500 	D 	лат. quingenti
1000 	M 	лат. mille

А алгоритм преобразования римских чисел в арабские, думаю, выглядит примерно так:

заводим суммы S1 и S2. S1 -- текущее значение числа (будет в итоге хранить результат),
S2 -- сумма номиналов последней встреченной последовательности одинаковых римских цифр.
Ну и храним текущую цифру последней последовательности одинаковых цифр.

идём в цикле по римским цифрам числа.

на каждом шаге увеличиваем S1 на величину N - S2 ( S1 += N[i] - S2 )

Если очередная римская цифра больше предыдущей, то обнуляем S2 и очищаем последовательность одинаковых цифр.

Если очередная римская цифра равна текущей цифре последней последовательности одинаковых цифр, то увеличиваем S2 на её номинал.

Если очередная римская цифра меньше предыдущей, то обнуляем S2 и очищаем последовательность одинаковых цифр, а номиналы последующих цифр суммируем с отрицательным знаком (до следующей большей цифры).

Вроде бы как всё.
...
Рейтинг: 0 / 0
29.05.2013, 13:32
    #38278375
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Ой, ёёёё!

авторСоставить программу, реализующую алгоритм, преобразующий произвольное положительное число, записанное в арабских цифрах, в систему римских цифр и наоборот.

надо же наоборот, арабские в римские.
блин...

Но это проще.
...
Рейтинг: 0 / 0
29.05.2013, 13:35
    #38278382
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
MasterZivИз википедии:
Ага, ты тоже эту статью дальше первых двух параграфов ниасилил...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.05.2013, 14:05
    #38278436
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Dimitry SibiryakovMasterZivИз википедии:
Ага, ты тоже эту статью дальше первых двух параграфов ниасилил...


Почему же, всё прочитал.
Да и раньше знал в общем-то.
...
Рейтинг: 0 / 0
29.05.2013, 14:07
    #38278441
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
MasterZivалгоритм преобразования римских чисел в арабские, думаю, выглядит примерно
так:
MasterZivПочему же, всё прочитал.
Тогда как не заметил точно расписанный алгоритм и даже готовый код?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.05.2013, 14:11
    #38278455
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Dimitry SibiryakovMasterZivалгоритм преобразования римских чисел в арабские, думаю, выглядит примерно
так:
MasterZivПочему же, всё прочитал.
Тогда как не заметил точно расписанный алгоритм и даже готовый код?


Ну, не заметил. Алгоритма там и нет кстати.
...
Рейтинг: 0 / 0
29.05.2013, 14:34
    #38278523
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
MasterZivАлгоритма там и нет кстати.
Хм, действительно, "если большая цифра стоит перед меньшей, то они складываются (принцип
сложения), если же меньшая — перед большей, то меньшая вычитается из большей (принцип
вычитания)" это не алгоритм.
Я бы сделал иначе:
1) Идём по цифрам справа налево
2) Если текущая цифра больше предыдущей - прибавляем к результату, иначе - вычитаем.
3) Всё, телемаркет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.05.2013, 19:05
    #38279170
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
Dimitry Sibiryakov,

Я другой алгоритм искал, см. выше...
...
Рейтинг: 0 / 0
29.05.2013, 22:51
    #38279365
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не знаю как решить эту задачу!! помогите пожалийста!!
CompositumdruceСоставить программу, реализующую алгоритм, преобразующий произвольное положительное число, записанное в арабских цифрах, в систему римских цифр и наоборот.
Я бы на месте автора пошёл по пути, подобному разработке парсера арифметических выражений, поскольку эти задачи выглядят подобными. Т.е. составил бы BNF грамматику и на её основе написал реализацию.
Одна из задач "Драконьей книги", между прочим.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / не знаю как решить эту задачу!! помогите пожалийста!! / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]