Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

05.10.2008, 17:35
|
|
Участник форума
Регистрация: 05.05.2007
Сообщений: 171
Провел на форуме: 1050662
Репутация:
435
|
|
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен
|
|
|

05.10.2008, 19:07
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен
ну вобщем так работает хотя для красоты надо было бы не юзать ltoa а написать свою:
Код:
#include <stdio.h>
#include <windows.h>
int cc1,cc2;
char buf[256];
int N2CC(char* N, int cc)
{
char x,d;
int len, res = 0;
d = 1;
len = strlen(N) - 1;
while(1)
{
res = res + d * (N[len] - '0');
if(len==0)break;
d*=cc; len--;
}
return res;
}
int main(int argc, char** argv)
{
if(argc<4)
{
printf("Usage: labx N cc1 cc2");
return 0;
}
cc1 = atol(argv[2]);
cc2 = atol(argv[3]);
ltoa(N2CC(argv[1],cc1),buf,cc2);
printf("%s\n",buf);
return 0;
}
Последний раз редактировалось bons; 05.10.2008 в 19:28..
|
|
|

05.10.2008, 19:25
|
|
Участник форума
Регистрация: 05.05.2007
Сообщений: 171
Провел на форуме: 1050662
Репутация:
435
|
|
еще тут небольшая поправка надо что бы работало как с целыми так и с дробными числами
|
|
|

05.10.2008, 19:47
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
в инете пример видел правда на делфи, думаю перевести на С труда не составит:
http://www.programmersforum.ru/archive/index.php/t-11035.html
|
|
|

05.10.2008, 23:58
|
|
Участник форума
Регистрация: 05.05.2007
Сообщений: 171
Провел на форуме: 1050662
Репутация:
435
|
|
к сожалению Делфи не знаю, вопрос по прежнему актуален
|
|
|

06.10.2008, 14:13
|
|
Новичок
Регистрация: 06.10.2008
Сообщений: 1
Провел на форуме: 5812
Репутация:
0
|
|
Помогите в Дельфи реализовать плиз.....
програмку авторизации (логин, пароль) с ограничением количества попыток ввода, Если авторизация прошла успешно и пользователь является админом то он может добавить или удалить usera в текстовом файле =)) вот такая вот
|
|
|

06.10.2008, 22:28
|
|
Новичок
Регистрация: 21.09.2008
Сообщений: 16
Провел на форуме: 249855
Репутация:
52
|
|
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен
Сам бы ты точно не написал... А я осилил ^^
Фича моего кода такая, допустим надо перевести из 2-ной в 16-ную, сначала переводим в из 2-ной в десятичную, потом из десятичной в 16-ную (собственно, как ты и просил). 3 функции, только последняя возвращяет массив символов, первые две возвращают вещественное число. Комментарии я написал, пример использования функций тоже. ^^
Код:
/*переводит дробное число из одной СС в другую
(основание которой меньше 36)*/
#include <iostream>
#include <math.h>
char rezA[255];//буффер под вывод шестнадцатеричной СС
/*переводит из любой СС в десятичную (основание СС, указатель на строку,
с начальным числом*/
double perevod10(int num, char* base)
{
int n1=0,n2=0,i=0,rez1=0;
double rez2=0;
while ( base[++n1] != '.') { }
for (i=0; i<=n1-1; ++i)
{
if ((int)base[i] <= (int)'9')
{
rez1+=((int)base[i] - (int)'0') * (int)pow(num,n1-1-i);
}
else
{
rez1+=((int)base[i] - (int)'A' + 10) * (int)pow(num,n1-1-i);
}
}
while ( base[n1+1+(++n2)] != NULL) { }
for (i=n1+1; i<=n1+n2; ++i)
{
if ((int)base[i] <= (int)'9')
{
rez2+=((int)base[i] - (int)'0') * pow(num, -1-(i-n1-1));
}
else
{
rez2+=((int)base[i] - (int)'A' + 10) * pow(num, -1-(i-n1-1));
}
}
return rez1+rez2;
}
/*переводит из десятичной в СС, основание которой мешьше 10*/
double perevod2 (int num, double base)
{
const double e=0.01;
long base_temp1=(long)base,rez1=0,p=1;
double base_temp2=base - (long)base,rez2=0;
while (base_temp1!= 0)
{
rez1=rez1+ (base_temp1%num)*p;
base_temp1=base_temp1/num;
p=p*10;
}
while ((base_temp2) > e)
{
base_temp2*=num;
rez2=(rez2 + (long)base_temp2)*0.1;
base_temp2=base_temp2- (long)base_temp2;
}
return rez1+rez2;
}
/*переводит из десятичной в СС, основание которой больше 10*/
char* perevodA (int num, double base)
{
const double e=0.01;
char temp;
long base_temp1=(long)base,rez1=0,k=0,i=0;
double base_temp2=base - (long)base,rez2=0;
while (base_temp1!= 0)
{
if (base_temp1%num <= 9)
{
rezA[i]=(char)(base_temp1%num + (int)('0'));
}
else
{
rezA[i]=(char)(base_temp1%num + (int)'A' -10);
}
base_temp1=base_temp1/num;
++i;
}
for (k=0; k<i/2; ++k)
{
temp=rezA[k];
rezA[k]=rezA[i-1-k];
rezA[i-1-k]=temp;
}
rezA[i]='.'; ++i;
while ((base_temp2) > e)
{
base_temp2*=num;
if (base_temp2 <= 9)
{
rezA[i]=(char)(base_temp2 + (int)('0'));
}
else
{
rezA[i]=(char)(base_temp2 + (int)'A' -10);
}
base_temp2=base_temp2- (long)base_temp2;
++i;
}
rezA[i]=NULL;
return rezA;
}
int main()
{
std::cout << perevod10(2, "1100.011") << "\n"; //из двоичной в десятичную
std::cout << perevod10(16, "FF.8") << "\n";//из шестнадцатеричной в десятичную
std::cout << perevod2(2, 1.625) << "\n";//из десятичной в двоичную
std::cout << perevodA(16, 255.5) << "\n";//из десятичной в шестнадцатеричную
return 0;
}
|
|
|

06.10.2008, 22:53
|
|
Участник форума
Регистрация: 30.08.2008
Сообщений: 128
Провел на форуме: 668329
Репутация:
106
|
|
Сам бы ты точно не написал... А я осилил ^^
любой осилит если захочет.
|
|
|

07.10.2008, 11:40
|
|
Новичок
Регистрация: 24.02.2007
Сообщений: 16
Провел на форуме: 91241
Репутация:
31
|
|
ребят помогите! в матрицах не силен(
9. Описать тип-объект Matrix (матрица произвольной размерности M*n) и его методы: ввод матрицы; вывод матрицы; дублирование столбцов матрицы, где каждый элемент содержит только неповторяющиеся цифры. Описать тип и методы его потомка Matr (методы: дублирование строк матрицы, где количество нулей среди цифр всех чисел строки равно номеру строки; дублирование столбцов матрицы, где все элементы повторяются одинаковое количество раз (замена метода)).
|
|
|

24.10.2008, 21:58
|
|
Постоянный
Регистрация: 28.03.2007
Сообщений: 310
Провел на форуме: 2666600
Репутация:
238
|
|
Срочно нужна помощь
Нада на Visual C++ Программа перевода заданного числа из десятичной системы в двоичную.
Помоите срочно
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|