Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * ДЗ 4 Задача "Автоматный распознаватель"
- */
- int detect(char c) {
- switch (c) {
- case 'I': return 1;
- case 'V': return 5;
- case 'X': return 10;
- case 'L': return 50;
- case 'C': return 100;
- case 'D': return 500;
- case 'M': return 1000;
- default: return 0;
- }
- }
- void numDetector() {
- cout << "Введите число римскими цифрами:\nI - 1, V - 5, X - 10, L - 50, C - 100, D - 500, M - 1000" << endl;
- string line;
- long long sum = 0;
- getline(cin >> ws, line);
- string num = "";
- for (int i = 0; i < line.size(); i++) {
- if (line[i] == 'I' or line[i] == 'V' or line[i] == 'X' or line[i] == 'L' or line[i] == 'C' or line[i] == 'D' or line[i] == 'M') {
- num += line[i];
- }
- }
- cout << "Исходная запись: " << num << endl;
- for (int i = num.size() - 2; i >= 0; i--) {
- if (detect(num[i]) >= detect(num[i+1])) {
- if (sum == 0) {
- sum += detect(num[i]) + detect(num[i + 1]);
- }
- else {
- sum += detect(num[i]);
- }
- }
- else {
- if (sum == 0) {
- sum += detect(num[i + 1]) - detect(num[i]);
- }
- else {
- sum -= detect(num[i]);
- }
- }
- }
- cout << "Итоговая запись: " << sum << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement