@Anvario0

Почему программа выводит одно и то де число?

Задание:
В строке найти последовательности цифр, каждую из них считать числом в той системе счисления, которая соответствует максимальной цифре, заменить числа в строке символами с кодами, полученными из этих чисел. Пример: 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
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы