Задание:
В строке найти последовательности цифр, каждую из них считать числом в той системе счисления, которая соответствует максимальной цифре, заменить числа в строке символами с кодами, полученными из этих чисел. Пример: aaa010101bbb343ccc – двоичная и пятиричная системы счисления.
Код:
#include <stdio.h>
#include <math.h>
int funcc(char a[]) {
int length = strlen(a);
printf("length = %d\n", length);
char num[255];
int w;
int check = 0;
for (int i = 0; i < length; i++)
{
if (a[i] >= '0' && a[i] <= '9') {
num[i] = a[i];
if (i == length - 1) {
w = atoi(num);
int secondw = w;
if (check == 1) {
printf("w = %d\n", w);
int a = 0;
while (w > 0) {
int b = w % 10;
if (b > a) {
a = b;
}
w /= 10;
}
a++;
printf("sistema schisleniya = %d\n", a);
int ssm = 0;
int u = 0;
while (secondw > 0) {
ssm += secondw % 10 * pow(a, u);
secondw /= 10;
u++;
}
printf("perevod = %d\n\n", ssm);
check = 0;
}
}
check = 1;
continue;
}
else {
w = atoi(num);
int secondw = w;
if (check == 1) {
printf("w = %d\n", w);
int a = 0;
while (w > 0) {
int b = w % 10;
if (b > a) {
a = b;
}
w /= 10;
}
a++;
printf("sistema schisleniya = %d\n", a);
int ssm = 0;
int u = 0;
while (secondw > 0) {
ssm += secondw % 10 * pow(a, u);
secondw /= 10;
u++;
}
printf("perevod = %d\n\n", ssm);
check = 0;
}
continue;
}
}
}
int main()
{
char mas[19] = "010101bbbccc53534";
funcc(mas);
}
Но по какой-то причине функция выводит данные только первого числа массива, так что в ответе имеем:
length = 17
w = 10101
sistema schisleniya = 2
perevod = 21
w = 10101
sistema schisleniya = 2
perevod = 21