#include<iostream.h>
int delenie(int a, int n)
{
int b = 0;
while(a>n)
{
a=a-n;
b++;
}
return b;
}
void main()
{
int a,i,n,v,b[25];
cout << "Vvedit nomer sistemu s4isleniy\n";
cin >> n;
cout << "Vvedit 4islo\n";
cin >> a;
for(i=0;a>=n;i++)
{
b=a%n;
a=delenie(a,n);
}
if(a!=0)
{
cout << a;
}
for(v=i;v<=i&&v>0;v--)
{
cout << b[v];
}
}
перевод в систему счисления
Код:
В этом коде во время проверки получается отрицательное число, да и к примеру, в 2-ой системе могут вывестись 9-ки, как я не могу понять.
PS
Если непонятно как я это написал(а я это очень каряво написал), могу переделать код с более осмыслеными индефекаторами.
Код:
#include<iostream.h>
int delenie(int a, int n)
{
int b = 0;
while([COLOR=blue]a >= n[/COLOR])
{
a = a-n;
b++;
}
return b;
}
void main()
{
int a,i , n, b[25];
cout << "Vvedit nomer sistemu s4isleniy\n";
cin >> n;
cout << "Vvedit 4islo\n";
cin >> a;
for(i=0; a != 0; i++)
{
b=a % n;
a = delenie(a,n); // or a /= n;
}
for( [COLOR=blue]i = i - 1[/COLOR];[COLOR=purple] i >= 0[/COLOR] ;i--)
{
cout << b;
}
cout << '\n';
}
int delenie(int a, int n)
{
int b = 0;
while([COLOR=blue]a >= n[/COLOR])
{
a = a-n;
b++;
}
return b;
}
void main()
{
int a,i , n, b[25];
cout << "Vvedit nomer sistemu s4isleniy\n";
cin >> n;
cout << "Vvedit 4islo\n";
cin >> a;
for(i=0; a != 0; i++)
{
b=a % n;
a = delenie(a,n); // or a /= n;
}
for( [COLOR=blue]i = i - 1[/COLOR];[COLOR=purple] i >= 0[/COLOR] ;i--)
{
cout << b;
}
cout << '\n';
}
1 - в функции деление неправильное условие вухода из цикла.
цикл надо продолжать до тех пор пока а >= n
2 - индекс i в массиве при окончании цикла в котором ты делаешь перевод из системы в систему всегда идет на один вперед, поэтому при выводе надо его вернуть на один назад.
3 - этот блок не нужен:
Код:
if(a!=0)
{
cout << a;
}
{
cout << a;
}
вот решение подобной задачи которая помоему делает перевод между любыми СС, посмотри если интересно: