IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Строки, Си++
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Вот само задание:
Написать и протестировать функцию 1_ТО_В(п, s, Ь), которая переводит целое число п в строку s, представляющую число в системе счисления с основанием Ь.

Объясните, пожалуйста, что от меня хотят? smile.gif) А то я чего-то не пойму...
Желательно на примере.


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А хотят от тебе аналог функции 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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Ага, понял вроде... спасибо.
Только вопрос по переводу числа из одной с/c в другую: как в двоичную из десятичной переводить я знаю, а остальные - так же?


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, вообще-то у нас в FAQ-е (паскалевском, правда, но смысл-то тот же) была функция по переводу из с/с (10) в любую другую: Общие вопросы по математике.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Сделал:

#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()...


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, это смотря какой у тебя компилятор... Типа string как такового не существует... Есть или char *, или std::string из STL
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


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


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






...
return strrev(s);
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Спасибо!


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 11:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name