Перейти до вмісту

Римські цифри


Повідомлень в темі: 14

#1 Гість_mosko_*

  • Гості

Відправлено 27.12.2009 – 16:58

  • 14
Римські цифри
Інститут Експериментальної Історії відправляє експедицію в часі до Стародавнього Риму. Ваша задача - допомогти мандрівникам перетворювати числа (від 1 до 399), що записані римськими цифрами, у десяткову форму. Відомо, що римська цифра І позначає 1, V - 5, X - 10, L - 50, С - 100, а двоцифрові послідовності IV - 4, IX - 9, XL - 40, ХС - 90. Наприклад, послідовності CXCVIII відповідає десяткове число 198(100+90+5+1+1+1).
Не всі послідовності римських цифр є коректними. Умови некоректності:
- більше трьох підряд однакових цифр, що позначають степінь 10 (некоректна послідовність - СССС; коректна послідовність - ССС);
- дві або більше однакові цифри, що не позначають степінь 10 (некоректні послідовності - VV, VIV; коректна послідовність - VI);
- цифри зліва позначають число, менше за число, що позначене цифрами справа і послідовність не входить до переліку дозволених двоцифрових (некоректні послідовності - LC, XXL; коректні послідовності – CL, XC);
- цифри зліва складають дозволену двоцифрову послідовність, що відповідає певному m-цифровому десятковому числу, але цифри справа також відповідають іншому m-цифровому десятковому числу; (некоректні послідовності – IXI, IVI, XCXL; коректні послідовності - XLIX, XCV),
Вхідні дані: (вводяться з клавіатури) – послідовність римських цифр: 1)послідовність є коректною; 2) послідовність є довільною.
Результуючі дані: 1) десяткове ціле число, яке відповідає введеній послідовності; 2) повідомлення YES - для коректної послідовності і NO – для некоректної.


кидайте на мило: takado89@i.ua

#2 -=VJ=-

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 6536 повідомлень
  • Стать:Чоловік
  • Місто:Київ

Відправлено 27.12.2009 – 17:03

Перегляд дописуmosko (27.12.2009 16:58) писав:

кидайте на мило: takado89@i.ua

І що за це буде?
  • 0

#3 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 27.12.2009 – 17:27

Перегляд допису-=VJ=- (27.12.2009 17:03) писав:

І що за це буде?
Цінні артефакти після повернення з Експедиції!
  • 0

#4 Twinkle

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1625 повідомлень
  • Стать:Жінка
  • Місто:Львів

Відправлено 27.12.2009 – 17:29

Перегляд дописуFT232BM (27.12.2009 17:27) писав:

Цінні артефакти після повернення з Експедиції!

Так, треба платити за те, що самому не хочеться мізки піднапрягти.
  • 0

#5 Уповноважений

    Козак - перевертень

  • Модератори
  • PipPipPipPipPipPipPipPipPipPip
  • 6236 повідомлень
  • Стать:Чоловік
  • Місто:пекельне болото

Відправлено 27.12.2009 – 17:41

ну йомайо!!! задачу так розжували, все докладно пояснили - і всеодно лінь.
Не хочеш працювати мозком - працюй лопатою, шо не ясно?
  • 0

#6 Гість_Гість_*

  • Гості

Відправлено 27.12.2009 – 17:54

та ладно вам. важко домогти?(якшо ж знаєте як правильно)
  • 0

#7 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 27.12.2009 – 18:25

Перегляд дописуSensssorika (27.12.2009 17:54) писав:

та ладно вам. важко домогти?(якшо ж знаєте як правильно)
Насправді важко, це згаяний час. Все зрозуміло, просто час можна витратити на дещо корисніше.


Далі прошу онтоп.
  • 0

#8 Гість_Гість_*

  • Гості

Відправлено 27.12.2009 – 18:30

Перегляд дописуFT232BM (27.12.2009 18:25) писав:

Насправді важко, це згаяний час. Все зрозуміло, просто час можна витратити на дещо корисніше.

Далі прошу онтоп.
окей. я,наприклад,не розумію. але мені цікаво. ну то як?
  • 0

#9 Вуйко Дмитро

    Where is my ban?!

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1736 повідомлень
  • Стать:Чоловік
  • Місто:Київ

Відправлено 27.12.2009 – 19:46

Про що ця тема? О_о
  • 0

#10 -=VJ=-

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 6536 повідомлень
  • Стать:Чоловік
  • Місто:Київ

Відправлено 27.12.2009 – 20:06

Перегляд дописуВуйко Дмитро (27.12.2009 19:46) писав:

Про що ця тема? О_о

Людині контрольну було ліньки робити - вона вирішила, що її за неї тут зроблять просто так :prapor3:

Та ще й на мило кинуть, щоб не завдавати собі клопоту ще раз сюди заходити <_<
  • 0

#11 Гість_mosko_*

  • Гості

Відправлено 28.12.2009 – 20:55

Перегляд допису-=VJ=- (27.12.2009 17:03) писав:

І що за це буде?


а шо ти за це хочеш???
  • 0

#12 Вареник

    banned

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3089 повідомлень
  • Стать:Чоловік

Відправлено 28.12.2009 – 21:13

бгггг я ледве стримуюся шоб не написати нєпрілічностєй
  • 0

#13 Уповноважений

    Козак - перевертень

  • Модератори
  • PipPipPipPipPipPipPipPipPipPip
  • 6236 повідомлень
  • Стать:Чоловік
  • Місто:пекельне болото

Відправлено 28.12.2009 – 21:45

чо то мене поперло на доброту. обясняю.
readln(a:string) або a:phar;
перебором шукаєш букви які відповідають девяткам, і міняєш на девятки. потім перебором шукаєш букви які відповідають вісімкам... і так далі...
  • 0

#14 Вареник

    banned

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3089 повідомлень
  • Стать:Чоловік

Відправлено 28.12.2009 – 22:58

Перегляд дописуХмурий Князь Вітольд (28.12.2009 21:45) писав:

чо то мене поперло на доброту. обясняю.
readln(a:string) або a:phar;
перебором шукаєш букви які відповідають девяткам, і міняєш на девятки. потім перебором шукаєш букви які відповідають вісімкам... і так далі...

всьо, тепер загадуй шо ти хоч за винагороду від топікстартера гг
  • 0

#15 kavalera

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1258 повідомлень
  • Стать:Чоловік

Відправлено 20.02.2010 – 22:38

Перегляд дописуSensssorika (27.12.2009 18:30) писав:

окей. я,наприклад,не розумію. але мені цікаво. ну то як?
Ось, поки сидів в бані, надибав цю тему, і спеціально для вас, Сенсоріко, написав. Сподіваюсь, той нахабний двієчник моско вже отримав свій незарах.)
Отже таке. Да, і не треба наїжжяти на "іди на", :unsure: він тут абсолютно доречний (хоча, звісно кому вже так муляє, можна всюди замінити блоком {printf();return 0;}. Власне, через потребу обов*язково друкувати оте "NO" я й виніс його в одне місце, шоб не дублювати).
#include<stdio.h>
#include<string.h>

int main(int argc, char* argv[]){

	register int d=0;
	register int n;

	if(argc<2){printf("enter some roman number\n");return 0;}
	n=strlen(argv[1]);

	while(n){
	 switch(argv[1][n-1]){
		case 'I':
			switch(d){
				case 0:
				case 1:
				case 2:		++d; break;

				case 5:
				case 10:	--d; break;
				default:
					goto exit;
			}
			break;
		case 'V':
			if(d<4)d+=5;
			 else goto exit;
			break;
		case 'X':
			if(d<30)d+=10;
			 else if((d>=50 && d<60)|(d>=100 && d<110))d-=10;
			  else goto exit;
			break;
		case 'L':
			if(d<40)d+=50;
			 else goto exit;
			break;
		case 'C':
			if(d<300)d+=100;
			 else if((d>=500 && d<600)|(d>=1000 && d<1100))d-=100;
			  else goto exit;
			break;
		case 'D':
			if(d<400)d+=500;
			 else goto exit;
			break;
		case 'M':
			if(d<3000)d+=1000;
			 else goto exit;
			break;
		default:
			goto exit;
	 }
	 --n;
	}

	printf("%s == %d\nYES\n",argv[1],d);
	return 0;
exit:
	printf("NO\n");
	return 0;
}

  • 0



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних