Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

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

Ответ
 
Опции темы
Старый 11.12.2006, 14:54   #1
n0x
 
Регистрация: 27.11.2006
Сообщений: 5
Репутация: 10
По умолчанию Задача: перевод целых чисел в римские

Задача на Паскале:
Заданное целое число от 1 до 1999 напечатать римскими цифрами.

Помогите решить пожалуйста! =

Последний раз редактировалось n0x; 12.12.2006 в 10:01.
n0x вне форума   Ответить с цитированием
Старый 11.12.2006, 18:14   #2
Virtson
Владимир М.
Профессионал
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Адрес: Барнаул -> Новосибирск
Сообщений: 1,290
Репутация: 442

icq: 329638065
По умолчанию

а как ты пробовал это сделать ?
Virtson вне форума   Ответить с цитированием
Старый 11.12.2006, 22:49   #3
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Адрес: 116км
Сообщений: 196
Репутация: 276

icq: 8611025
По умолчанию

Ответ на твой вопрос можно найти почти в любом FAQ.
Он есть и в DRKB 2.3 from Vit.
__________________
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума   Ответить с цитированием
Старый 12.12.2006, 09:55   #4
n0x
 
Регистрация: 27.11.2006
Сообщений: 5
Репутация: 10
По умолчанию

Спасибо! Пытался сначала сделать наоборот, из римских в целые, но не получилось. Вот программа:
Код:

var s: string;
  n, c, c1, i, a: integer;
begin writeln('введи число : ');
  readln(s);
  c := 0; n := 0;
  for i := 1 to length(s) do
  begin
    c1 := c;
    if s[i] = 'I' then c := 1;
    if s[i] = 'V' then c := 5;
    if s[i] = 'X' then c := 10;
    if s[i] = 'L' then c := 50;
    if s[i] = 'C' then c := 100;
    if s[i] = 'D' then c := 500;
    if s[i] = 'M' then c := 1000;
    if c > c1 then a := -2 * c1
    else a := 0;
    n := n + a + c
  end;
  writeln('ваше число = ', n)
end.


Последний раз редактировалось n0x; 12.12.2006 в 10:04.
n0x вне форума   Ответить с цитированием
Старый 12.12.2006, 20:52   #5
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
Репутация: 237

icq: 5311314
По умолчанию

Вот полностью рабочее решение:
Код:

var s,n,x:integer;
    t:string;

procedure Rim(a,b:string;z:integer);
begin
while pos(a,t) <> 0 do
 begin
 delete(t,pos(a,t),1);
 n:=n+1;
 if n=z then
  begin
  t:=b+t;
  n:=0;
  end;
 end;
for s:=1 to n do
t:=t+a;
n:=0;
end;

procedure Por(sym:string);
begin
while pos(sym,t) > 0 do
begin
n:=n+1;
delete(t,pos(sym,t),1);
end;
for s:=1 to n do
t:=t+sym;
n:=0;
end;

begin
ReadLn(s);
while s > 0 do
begin
s:=s-1;
t:=t+'I';
end;
Rim('I','V',5);
Rim('V','X',2);
Rim('X','L',5);
Rim('L','C',2);
Rim('C','D',5);
Rim('D','M',2);
Por('M');
Por('D');
Por('C');
Por('L');
Por('X');
Por('V');
Por('I');
writeln(t);
readln;
end.

Только в таком случае накладывается ограничение. Максимальное число - 256. Как обойти решать тебе.

Последний раз редактировалось AVer; 12.12.2006 в 23:03.
AVer вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод целых чисел из одной системы счисления в другую =LeonZone= Помощь студентам 19 12.12.2010 17:18
Умножение длинных целых чисел Rifler Паскаль 1 04.06.2008 21:12
Перемещение из массива целых чисел... Си Sota Помощь студентам 1 01.06.2008 19:51
Вывод целых и десятичных чисел Maycal Общие вопросы C/C++ 2 24.10.2007 12:34


00:20.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru