Конвертер из римской системы счисления в арабскую - C (СИ)
Формулировка задачи:
конвертер из римской системы счисления в арабскую
Решение задачи: «Конвертер из римской системы счисления в арабскую»
textual
Листинг программы
// rimskaya_sistema.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,a,b;
char s[10];
int ch = 0;
printf("Введите число в римской системе\n");
scanf("%s", s);
switch(s[strlen(s)-1])
{
case 'I' : a = 1; break;
case 'V' : a = 5; break;
case 'X' : a = 10; break;
case 'L' : a = 50; break;
case 'C' : a = 100; break;
case 'D' : a = 500; break;
case 'M' : a = 1000;
}
ch = a;
for ( i = strlen(s)-2 ; i >-1 ; i--)
{
switch(s[i])
{
case 'I' : b = 1; break;
case 'V' : b = 5; break;
case 'X' : b = 10; break;
case 'L' : b = 50; break;
case 'C' : b = 100; break;
case 'D' : b = 500; break;
case 'M' : b = 1000;
}
if ( a == b)
{
ch = ch + b;
}
if ( b < a)
{
ch = ch - b;
a = b;
}
if ( b > a)
{
ch = ch + b;
a = b;
}
}
printf("Output: %d", ch);
getch();
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется точка входа для консольного приложения
- Объявляются переменные: i, j, a, b, s, ch
- Выводится сообщение для ввода числа в римской системе счисления
- Считывается введенное число в массив s с помощью функции scanf
- Определяется значение переменной a в зависимости от последнего символа введенного числа
- Переменная ch инициализируется значением переменной a
- Начинается цикл, который проходит по всем символам введенного числа в обратном порядке
- Внутри цикла определяется значение переменной b в зависимости от текущего символа
- Если значение переменной a равно значению переменной b, то значение переменной ch увеличивается на значение переменной b
- Если значение переменной b меньше значения переменной a, то значение переменной ch уменьшается на значение переменной b, а значения переменных a и b меняются местами
- Если значение переменной b больше значения переменной a, то значение переменной ch увеличивается на значение переменной b, а значения переменных a и b меняются местами
- После окончания цикла выводится значение переменной ch
- Вызывается функция getch для приостановки выполнения программы до нажатия клавиши
- Возвращается 0, что означает успешный конец работы программы