Форум программистов, компьютерный форум CyberForum.ru

Арабские в римские - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как сравнить 4 числа http://www.cyberforum.ru/cpp-beginners/thread64896.html
Не могу додуматься как сравнить 4 числа. Вот пример есть числа 3, 1,2,6. Нужно поделить их на 2 группы таким образом что бы суммы каких либо чисел были приближенно равны. например сдесь получиться 2+1+3=6 и число 6 тоесть группа будет и чисел 2,1,3 и группа из числа 6. Пример 2 есть числа 3, 1,2,7. Нужно поделить их на 2 группы таким образом что бы суммы каких либо чисел были приближенно...
C++ cтрутура данных с++ Уважаемые программисты!!! помогите пожалуйста дописать программу. я пока еще чайник . "Имеем в текстовом файле список студентов: фамилия, имя ,шифр группы ,оценки по экзаменам. сформировать список по фамилии ,имени ,шифру группы и среднему балу .вывести две таблицы: данные и результат" часть программы сделана ,а сгрупировать по шифру группы и среднему баллу неполучаеться. мой код ... http://www.cyberforum.ru/cpp-beginners/thread64872.html
C++ Не могу решить
Создать два бинарных файла, все числа, содержащиеся в обоих файлах одновременно, переписать в третий файл. Дополнительных массивов не использовать. Не могу решить задание из моей контрольной помогите.
С++ .вычислить сумму элементов массива,до min элемента. C++
В одномерном массиве,состоящем из n вещественных элементов ,вычислить: – Сумму элементов массива,расположенных до минимального элемента; – Записать элементы массива в файл. Добавлено через 2 минуты Помогите пожалуйста... к завтрашнему дню надо...
C++ Алгоритм квадратичной сортировки http://www.cyberforum.ru/cpp-beginners/thread64847.html
Доброго времени суток! есть вот такая задача: При составлении программы сортировки использовать минимальную необходимую память и эффективные структуры данных. кто силен ?
C++ Не работает eof(). о__О в такой вот ситуации возвращает всегда ноль. даже в данном случае, когда на e: лежит чистый файл. #include<conio.h> #include<iostream.h> #include<fstream.h> main() {clrscr(); int i; //char ch=' '; подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
19.11.2009, 10:12     Арабские в римские
artem0n2, делал для кого-то тут обратную задачу - из римских в арабские... Может пригодится?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
/* Строка в верхнем регистре */
char *strToUpper(char *str){
        char *p;
        for ( p = str; *p; p++ )
                *p = toupper(*p);
        return str;
}
 
/* Удаление пробельных символов */
char *cutSpaces(char *str){
        char *head;
        char *tail;
 
        for ( head = str; isspace(*head); head++ )
                ;
        for ( tail = str + strlen(str) - 1; (tail >= head) && (isspace(*tail)); tail-- )
                ;
        *++tail = 0;
        
        return head;
}
 
/* проверка отсутствия недопустимых символов */
int validRomeNumber(char *s){
        char *rome_digits = "IVXLCDM";
        for ( ; *s; s++ )
                if ( !strchr(rome_digits, *s) )
                        return 0;
        return 1;
}
 
/* перевод в число */
int romeToInt(char *rome){
        int num_digits, result, i;
        int *arabian = NULL;
        
        /* массив из "понятных" чисел */
        num_digits = strlen(rome);
        if ( (arabian = (int*)calloc(num_digits, sizeof(int))) == NULL ){
                fprintf(stderr, "Not enough memory!\n");
                exit(1);
        }
        /* заполнение массива */
        for ( i = 0; i < num_digits; i++ ){
                switch(rome[i]){
                        case 'I' :
                                arabian[i] = 1;
                                break;
                        case 'V' :
                                arabian[i] = 5;
                                break;
                        case 'X' :
                                arabian[i] = 10;
                                break;
                        case 'L' :
                                arabian[i] = 50;
                                break;
                        case 'C' :
                                arabian[i] = 100;
                                break;
                        case 'D' :
                                arabian[i] = 500;
                                break;
                        case 'M' :
                                arabian[i] = 1000;
                                break;
                        default :
                                free(arabian);
                                arabian = NULL;
                                return -1;
                }
        }
        /* генерация числа */
        result = 0;
        i = 0;
        while ( i < num_digits ){
                if ( (i < (num_digits - 1)) && (arabian[i] < arabian[i+1]) ){
                        result += arabian[i+1] - arabian[i];
                        i += 2;
                }
                else {
                        result += arabian[i];
                        i += 1;
                }
        }
        /* освобождение массива, возвращение результата */
        free(arabian);
        arabian = NULL;
        return result;
}
        
 
int main( void ){
        char buf[BUFSIZ];
        char *num;
        
        while ( 1 ){
                printf("Enter some Rome number or 0 for exit: ");
                fgets(buf, sizeof(buf), stdin);
                if ( *buf == '0' )
                        break;
                num = strToUpper(cutSpaces(buf));
                if ( !validRomeNumber(num) )
                        printf("%s is not valid Rome number!\n", num);
                else
                        printf("%s = %d\n", num, romeToInt(num));
        }
        
        return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru