Помощь - Поиск - Пользователи - Календарь
Полная версия: Строки
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Unknown
Вот само задание:
Написать и протестировать функцию 1_ТО_В(п, s, Ь), которая переводит целое число п в строку s, представляющую число в системе счисления с основанием Ь.

Объясните, пожалуйста, что от меня хотят? smile.gif) А то я чего-то не пойму...
Желательно на примере.
volvo
А хотят от тебе аналог функции itoa из библиотеки stdlib... Ей тоже надо передать число в 10-ной системе счисления, и с/с, в которую его перевести, и получаешь строку, содержащую результат:

#include <stdio.h>
#include <stdlib.h>

int main() {
char buffer[20];

printf("%s\n", itoa(124, buffer, 8));
return 0;
}

Напечатано будет 174, что является представлением 124(10) в с/с с основанием 8
Unknown
Ага, понял вроде... спасибо.
Только вопрос по переводу числа из одной с/c в другую: как в двоичную из десятичной переводить я знаю, а остальные - так же?
volvo
Ну, вообще-то у нас в FAQ-е (паскалевском, правда, но смысл-то тот же) была функция по переводу из с/с (10) в любую другую: Общие вопросы по математике.
Unknown
Сделал:

#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();
}


Что-то не так в объявлении функции itob()...
volvo
Ну, это смотря какой у тебя компилятор... Типа string как такового не существует... Есть или char *, или std::string из STL
Unknown
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();
}
volvo
...
return strrev(s);
...
Unknown
Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.