![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 04.06.2017
Сообщений: 3
|
![]()
Всем привет!
Задача: исходная строка (char) содержит числа десятичной системы счисления. Найти их, создать новую строку, в которой заменить числа десятичной системы счисления на их же номинал в шестнадцатеричной системе счисления. Использовать стандартные функции и библиотеки нельзя. Мой код: он хорошо переводит только числа, символы букв не могу перевести. #include <stdio.h> void inputChar(char *str) { printf("input array char <100: "); scanf("%s", str); } void revers(char *A) { int j; for (j = 0; A[j] != '\0'; j++); j--; for (int i = 0; i <j; i++, j--) { char temp = A[i]; A[i] = A[j]; A[j] = temp; } } int charToDecInt(char *A) { int summ = 0; for (int i = 0; A[i] != '\0'; i++) { if ('0' <= A[i] && A[i] <= '9') { summ *= 10; summ += A[i] - '0'; } else { summ += A[i]-'A'+10; } } return summ; } void decIntTohexString(int a, char *A) { int j = 0; while (a != 0) { int r = a % 16; if (r >= 1 && r <= 9) { r += '0'; } else { r += 'A'- 10; } A[j++] = r+A[j]; a /= 16; } A[j] = '\0'; revers(A); } void display() { const int N = 100; char A[N] = ""; char B[N] = ""; inputChar(A); int a = charToDecInt(A); decIntTohexString(a, B); printf("hexChar = %s\n", B); } int main() { display(); return 0; } |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
![]()
- зачем буквы-то переводить? В задании сказано только про цифры.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
![]()
Есть стандартная функция reverse(), если что.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
![]()
Код какой-то бредовый, если честно.:D Что Вы хотели сказать вот этой строкой:
Что вообще делает ваша программа и что вообще нужно сделать? Одно я могу сказать точно: Ваша программа выдает полный бред.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,706
|
![]() Цитата:
![]() Пример: 2655 / 16 = 165 остаток 15, т.е. 'F' 165 / 16 = 10 остаток 5 т.е. '5' 10 / 16 = 0 остаток 10, т.е. 'A'. Расчет закончен, имеем 'A5F' ------------------------- Если нужно привести в HEX-виде ASCII-коды символов, то тут нет никаких арихметикав: номер позиции символа в кодовой таблице и есть его код в HEX-виде. ------------------------- Так нет же: оказывается, в строке числа, причем их несколько. Тогда задача дополняется первой частью: 1. Очищаем число-приемник. 2. Берем очередной символ строки. 3. Если это цифра, то оставляем 4 младших бита, накладывая маску 0Fh, и прибавляем то, что осталось, к умноженному на 10 числу приемнику; идем на 2. 4. Если не цифра, но и не конец строки - переходим к следующему числу. 5. Если конец строки - выполняем вторую часть задачи (описано выше) Вот как-то так : '255 2655' -> 'FF A5F' "Не зная куда плыть - откуда тебе ждать попутного ветра?" Последний раз редактировалось digitalis; 04.06.2017 в 23:23. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,706
|
![]()
Карлсон, пардон - Серега_123 - улетел. И не обещал вернуться.
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Последовательность символов '15' должна распознаваться как '1' и '5' или как '15'? В хексе это немного разные значения
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,706
|
![]()
...
Последний раз редактировалось digitalis; 06.06.2017 в 22:37. Причина: удалил |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автоатическая замена содержимого char* логическим значением | MerilStrayf | Visual C++ | 0 | 07.06.2015 19:55 |
цифры в массиве char | Vladislavv | Помощь студентам | 5 | 31.07.2014 04:04 |
Замена в массиве | Ebon | Помощь студентам | 2 | 24.12.2011 17:40 |
Замена или вставка символа в char *. | Lazio | Общие вопросы C/C++ | 11 | 30.09.2009 19:19 |
Возвращение массива символов char | ActioNs | Общие вопросы C/C++ | 3 | 10.01.2009 02:33 |