Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Turbo pascal

Сообщения:  [1-9] 

 
 автор: 12345   (30.11.2005 в 18:23)   письмо автору
 
   для: Axxil   (30.11.2005 в 16:44)
 

Что интересно, я за 10 минут нашёл готовую программу перевода в римские числа на Паскале. Оставляю эту задачку по поиску в интеренете для любопытствующих :).

а вот ещё задача по числам: http://sunschool.math.rsu.ru/olymp/2005/ - Задачи олимпиады по программированию "МЕХМАТ-2005" - Дана строка s. Проверить, является ли эта строка записью некоторого числа римскими цифрами, и если является, то вывести на экран следующие девять чисел римскими цифрами (например, для s='VI' надо вывести 'VII VIII IX X XI XII XIII XIV XV'). Если строка s не является римским числом, то вывести развернутое сообщение об ошибке. (Подразумеваются числа до 3000.)

А мы - давайте решим задачу перевода в рим.чис. на JS или РНР :)
Я вот написал на JS - кто сделает изящнее?
<script>(function num2rom(n){var mantiss=(''+n).length-1;
    var D='';
    for(;mantiss>=0;mantiss--){
        poryadok=Math.pow(10,mantiss);
        D+=(''+['',1,11,111,12,  2,21,211,2111,13][Math.floor(n/poryadok)])
            .replace(/1/g,'IVXLCDM>'.charAt(mantiss*2))
            .replace(/2/g,'IVXLCDM>'.charAt(mantiss*2+1))
            .replace(/3/g,'IVXLCDM>'.charAt(mantiss*2+2));
        n=n%poryadok;
    }alert(D);
})(2384)
</script>

   
 
 автор: Axxil   (30.11.2005 в 16:44)   письмо автору
 
   для: Loki   (30.11.2005 в 14:13)
 

Я объяснил принцип. Что надо работать с разрядами числа. А реализауия уже дело техники. Что в этом смысле 900 не отличается от 90 и 9. Что надо писать функцию для одной цифры и её разбирать. то есть определяем в ряду 1..9 "знаковые" цифры и узнаём что если степень при разряде например 0 то есть единицы и мы 5 обозначаем как V (5*10^1 же будет L по-моему) и знаем что всё что меньше 4 ставим обозначение основной единицы (I в нашем случае, ну или X в другом) 4- пишем [основная единица][середина] (IV) 5- середина (V) дальше соответственно [середина][базовая единица] VI 9-[Предыдущая базовая единица][Следуюющая базовая единица] IX
Теперь загоняем в массив обозначения ряда 1 и 5 для всех разрядов и получаем что нужно.
Может слишком наворотил, но я так вижу...

   
 
 автор: Loki   (30.11.2005 в 14:13)   письмо автору
 
   для: Axxil   (30.11.2005 в 12:53)
 

Собственно, в функции вся и сложность:)
ну подсчитали вы что для числа 9:
1 разряд V и 4 разряда I
отсюда совсем не следует что записываться это будет как IX.
Короче, смую важную часть алгоритма вы и опустили:)

   
 
 автор: Alexx   (30.11.2005 в 13:22)   письмо автору
 
   для: Axxil   (30.11.2005 в 12:53)
 

Axxil спасибо

   
 
 автор: Axxil   (30.11.2005 в 12:53)   письмо автору
 
   для: Alexx   (29.11.2005 в 18:36)
 

Главное же в программировании алгоритм.
Примерно так:
Вычисляем разряды числа то есть делим последовательно на 10 и 100 и 1000, берём целую часть получаем число x=a*10^3+b*10^2+c*10^1+d*10^0 так как все разряды строятся одинаково, единственное отличие как обозначаюися старшие разряда (X-10, C-100, M-1000)
таким образом пишем функцию которая записывае число нужного разряда. Применяем несколько раз для каждого разряда и получаем римское число. Пример IX - 9 XC-90 CM - 900

   
 
 автор: codexomega   (29.11.2005 в 23:58)   письмо автору
 
   для: Alexx   (29.11.2005 в 22:27)
 

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

   
 
 автор: Alexx   (29.11.2005 в 22:27)   письмо автору
 
   для: Artem S.   (29.11.2005 в 19:30)
 

Artem S. спасибо за ответ!

задачи актуальны до сих пор :)

   
 
 автор: Artem S.   (29.11.2005 в 19:30)   письмо автору
 
   для: Alexx   (29.11.2005 в 18:36)
 

За вас никто ничего делать не будит. Наивные....

   
 
 автор: Alexx   (29.11.2005 в 18:36)   письмо автору
 
 

Задача такая: Составить программу, которая при вводе арабских цифр выводит на экран соответствующие им римские числа
1 - I
2 - II
3 - III
4 - IV
5 - V
6 - VI
7 - VII
8 - VIII
9 - IX
и т.д.
вводимы числа могут быть от 1 до 1000

и торая:
найти с точностью 0.0001 все корни уравнения 1/x=sinx. Использовать любой подходящий метод. Для получения отрезков, содержащих корни, исследовать график функции y=sin x-1/x

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования