Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2008, 11:07   #1
Sergeevich
Пользователь
 
Регистрация: 26.05.2008
Сообщений: 30
Восклицание Римские цифры

Пожалуйсто помогите с задачей, условие такое: Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами. Делал через условный оператор, но это слишком объемно, глупо и к каждой цифре приходится присваивать римскую. Я думаю это нужно использовать через цикл, но понятия не имею как реализовать , заранее спасибо.
Sergeevich вне форума Ответить с цитированием
Старый 26.05.2008, 17:16   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Что- никто с вами не общается.
Делать нужно так:
1. Создаем константу-массив записей, где одним полем будет арабская запись числа, вторым полем его римская запись.
2.В цикле(правильно), только в двойном читаем число с перврго разряда до последнего и меняем цифры на соответствующие символы.
Пишется это так:
Код:
uses crt;
const
  Tab_per: array[1..13] of record //таблица пересчета - массив записей
    ar: word;  //арабские
    rm: string[2];  римские
  end = ((ar: 1000; rm:'M'),  (ar: 900; rm: 'CM'), (ar: 500; rm: 'D'),
         (ar: 400; rm: 'CD'), (ar: 100; rm: 'C'),  (ar: 90; rm: 'XC'),
         (ar: 50; rm: 'L'),   (ar: 40; rm: 'XL'),  (ar: 10; rm: 'X'),
         (ar: 9;rm: 'IX'),   (ar: 5; rm: 'V'),    (ar: 4; rm: 'IV'),
         (ar: 1; rm: 'I'));
var
  rimch: string;//арабские
  arch: longint;  //римские
  num: byte;  //счетчик цикла
  symb: string[2]; //римский символ
  znch: word;  //значение числа в процессе преобразования
begin
clrscr;
  Write('Vvedite arabskoe chislo: ');
  ReadLn(arch);
  rimch := '';//римский символ-пустая строка
  num := 1; //смотрим первый разряд(у вас 1000)
  repeat
    symb := Tab_per[num].rm;//первый символ M
    znch := Tab_per[num].ar; //первое число 1000
    while znch <= arch do  //пока значение числа меньше или рано заданному
       begin
         rimch := rimch + symb; //добавляем римские символы
         Dec(arch, znch);  //уменьшаем число на значение(сначала вычитаем 1000, потом сотни и т.д )
       end;
    Inc(num);//переходим к следующему разряду числа
  until arch <= 0; //кончилось число-заканчиваем
  WriteLn('Rimskoe chislo: ', rimch);
  Readln
end.
puporev вне форума Ответить с цитированием
Старый 26.05.2008, 18:21   #3
Sergeevich
Пользователь
 
Регистрация: 26.05.2008
Сообщений: 30
По умолчанию

Спасибо за помощь
Sergeevich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление цифры из числа Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 15.03.2008 01:51
Найти ненулевые цифры kommunist Помощь студентам 2 25.11.2007 11:16
Перевёрнутые цифры BETONOMESHALKA Общие вопросы Delphi 2 04.11.2007 15:22
как узнать что введено а Edit1 цифры или нет doncova1 Компоненты Delphi 9 05.02.2007 10:43
Задача: перевод целых чисел в римские n0x Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2006 19:52