Непонятная Ошибка (си)

  • Автор темы d3fToR
  • Дата начала
D

d3fToR

#1
У меня такая проблема:
Ниже я вставил код программы, в которой определена функция, которая переводит число из 10-чной Системы счисления(сс) в n-ичную сс, где n<=25.
Если вы запустите программу, то увидите, что число переводится правильно ( только в массиве запись не верна ), но если речь идёт о, допустим 12-ичной, то после 9ти идёт А,В и так далее. Так вот, после подсчёта остатков после деления, он не переводит остаток из числа в символ, допустим если у меня остаток 12, то он не переводит в С. Вместо этого он оставляет пробелы.. Я не понимаю почему, спросил у преподователя, он тоже не смог найти ошибку. Надеюсь на вас. Код компилируется ( у меня MinGW ), синтаксических ошибок нету, поэтому можете скомпилировать и посмотреть, что на том месте где должен быть символ, появляется пробел, а после него, для наглядности я поставил это "-|".

Огромное спасибо, за то что хотябы уделили мне своё внимание.


C++:
#include "stdio.h"
void perevod4isla(int x, int n)
{
char a[]="0123456789ABCDEFGHIJKLMNO";
int mass[10],i;
puts("Введите число в десятичной системе счисления");
scanf("%i", &x); 
puts("Введите систему счисления");
scanf("%i", &n); 
if(x<=0) 
{ 
puts("Второе число должно быть положительное!"); 
scanf("%i", &x);
};
for(i=0;i<=10;i++)
{
mass[i]=x%n;
x/=n;
printf("%i", mass[i]);
};
for(i=0;i<=10;i++)
printf("%c-|", a[mass[i]]);
};

void main()
{
int x,n;
perevod4isla(x,n);
}
 
Q

qqwertty

#2
У вас массив a портится, во всяком случае у меня, да.

C++:
for(i=0;i<=10;i++)
{
mass[i]=x%n;
x/=n;
printf("%i", mass[i]);
};
Вот здесь у вас ошибка. Массив mas имеет 10 элементов. А вы пишите что-то в 11. Перепишите цикл
 
D

d3fToR

#3
qqwertty, огромое спасибо!) так и знал, что какая-то банальная ошибка..
СПАСИБО!!!
 
D

d3fToR

#4
Появилась новая проблема, не могу поменять условие цикла так, чтобы остаток числа,который вычисляется первый, записывался в последний элемент массива, следующий в n-1, вот код, вроде правильный, но при компиляции всё равно пишет по старому?О_о файл точно тото компилирую и сохраняю ;)

C++:
for(i=9;i>=0;i--)//(i=0;i<10;i++) - код, который был раньше
{
mass[i]=x%n;
x/=n;
printf("%i", mass[i]);
};
 
Q

qqwertty

#5
Выводите в том же цикле - следовательно массив у вас в обратном порядке. Отдельно вывод сделайте.