Я новичок в C и пишу программу, которая в основном преобразует десятичное число в основание 6, но числа за пятой позицией не отображаются.Когда я ввожу 56400 в качестве числа, которое я хочу преобразовать, вывод программы будет 13040 вместо 1113040, что является правильным ответом.
Я вспомнил, как java использует массивы, поэтому я гуглил способ созданиямассив динамического размера.Я обнаружил, что используя alloc и malloc, я практически никогда не мог исчерпать пространство для моего массива.Я не очень понимал это, потому что я не видел указателей и всего этого джаза и, в конце концов, не знал, как это реализовать.Поэтому я решил попробовать разные вещи:
Первое: сам алгоритм не может быть и речи.Он может показывать число, число цифр которого не превышает 5, и, пробуя его самостоятельно, он в основном дает правильный ответ.Второе: я попытался определить размер массива, чтобы узнать, в этом ли проблема.Таким образом, я определил, что мой массив состоит из 8 элементов, и в результате получилось, что если мое десятичное число дает основание 6, которое содержит 8 цифр, то число показывает правильное значение, если нет, то оно дает действительно странные числа, такие как -7600 или -2 миллиона-что-то.
Вот код: мой основной метод и моя функция, которая преобразует числа в основание 6, где, как мне кажется, проблема.
/*Translations:
residuo: remainder
division: quotient of a division
adicion: sum, addition
numeroBase6: my number in base 6*/
int toBase6(int number) {
int division = number;
int residuo;
int y = 1;
int numeroBase6[y];
int adicion = 0;
int numSix = 0;
residuo = division % 6;
division = division / 6;
numeroBase6[0] = residuo;
while(division > 0) {
residuo = division % 6;
division = division / 6;
if(division >= 0){
numeroBase6[y] = residuo;
y++;
}else {
numeroBase6[y] = division;
}
}
for(int x = 0; x <= sizeof numeroBase6; x++) {
adicion = numeroBase6[x] * pow(10, x);
numSix += adicion;
}
return numSix;
}
Мой основной метод:
int num1;
int resultado;
printf("Escriba un numero en decimal: "); //Print "Write your decimal number"
scanf("%d", &num1);
resultado = toBase6(num1);
printf("\nNumero en base 6 es: %d\n", resultado); //Print "Your number in base 6 is: "
Итак, я хочу знать, что я могу сделать, чтобы показать массив чисел больше 5?