Вот само задание:
Написать и протестировать функцию 1_ТО_В(п, s, Ь), которая переводит целое число п в строку s, представляющую число в системе счисления с основанием Ь.
Объясните, пожалуйста, что от меня хотят? ) А то я чего-то не пойму...
Желательно на примере.
А хотят от тебе аналог функции itoa из библиотеки stdlib... Ей тоже надо передать число в 10-ной системе счисления, и с/с, в которую его перевести, и получаешь строку, содержащую результат:
#include <stdio.h>
#include <stdlib.h>
int main() {
char buffer[20];
printf("%s\n", itoa(124, buffer, 8));
return 0;
}
Ага, понял вроде... спасибо.
Только вопрос по переводу числа из одной с/c в другую: как в двоичную из десятичной переводить я знаю, а остальные - так же?
Ну, вообще-то у нас в FAQ-е (паскалевском, правда, но смысл-то тот же) была функция по переводу из с/с (10) в любую другую: http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
Сделал:
#include <conio.h>
#include <iostream.h>
#include <string.h>
string itob(int n,string s,int b)
{
string digit="0123456789ABCDEF";
while (n>0)
{s=digit[n%b]+s;
n/=b;}
itob=s;
}
void main()
{
clrscr();
int n,b;
string s;
cout<<"\nBBeguTe 4uc/lo: ";
cin>>n;
cout<<"\nBBeguTe ocHoBaHue cucTeMbl c4uc/leHu9l: ";
cin>>b;
cout<<"\n\n"<<n<<" B cucTeMe c4uc/leHu9l "<<b<<" = "<<itob(n,s,b)<<endl;
getch();
}
Ну, это смотря какой у тебя компилятор... Типа string как такового не существует... Есть или char *, или std::string из STL
Borland C++ V3.1
Вот, что у меня получилось - только нужно перевернуть строку, а как - я не могу понять...
#include <conio.h>
#include <iostream.h>
#include <string.h>
char* itob(int n,char* s,int b)
{
int i=0;
char* digit="0123456789ABCDEF";
while (n>0)
{s[i]=digit[n%b];
i++;n/=b;}
s[i]='\0';
return s;
}
void main()
{
clrscr();
int n,b;
char* s="";
cout<<"\nBBeguTe 4uc/lo: ";
cin>>n;
cout<<"\nBBeguTe ocHoBaHue cucTeMbl c4uc/leHu9l: \0";
cin>>b;
cout<<"\n\n"<<n<<" B cucTeMe c4uc/leHu9l "<<b<<" = "<<itob(n,s,b)<<endl;
getch();
}
...
return strrev(s);
...
Спасибо!