Харьков Форум
  Харьков Форум > Hi-Tech... > Железо

Старый 23.12.2005, 19:31   #1
Lich

 
 
Регистрация: 19.10.2005
Адрес: X
Сообщений: 218
 
Вопрос C# или моя смерть?

прошу, помогите! не могу написать прогу на си, переводящую десятичные числа в двоичные коды и наоборот. причем, никакие спец библиотеки и функции не должны быть использованы... только циклы, умножение, деление, остаток и т.п... Help!!! иначе мне завтра


    Вверх
Старый 23.12.2005, 21:05   #2
sb


 
 
Регистрация: 24.09.2005
Сообщений: 3,049
 
По умолчанию
Если ты не можешь справиться с такой задачей, то надо ли тебе заниматься программированием?


    Вверх
Старый 23.12.2005, 21:11   #3
m i c


 
 
Регистрация: 18.09.2005
Адрес: Харьков
Сообщений: 3,444
 
По умолчанию
Автор, перечитай свой девиз...


    Вверх
Старый 24.12.2005, 01:08   #4
Aquatarkus

 
 
Регистрация: 25.11.2005
Адрес: Харьков
Сообщений: 392
 
По умолчанию


//crypt by SSZCPG //black c0de http://ssz.by.ru/
//started: 13.09.02

/*
crypt.exe number_in_decimal
by default cryptr output in crypt.bcd file
*/

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>

char *dectobin(int, int jmp=0); // jmp=0 - used 8bit digit grid, jmp=1 - 4bit

fstream outf;
char outfn[]="crypt.bcd"; //change this, if you want change output file-name

int main(int argc, char *argv[]){
int r=0;
int datasize=0;

if(argc<2) {
cerr << "use: <program> <data>\n";
return 0;
}
outf.open(outfn, ios::out);
if(!outf){
cerr << outfn << " error\n";
return 0;
}
datasize=strlen(argv[1]);
char *data = new char[datasize+1];
for(int i=0; i<datasize;i++) data[i]='0';
data[datasize]='\0';
data=argv[1];
r=(int)(log(atoi(data)+1)/log(2)+1);
outf << "dec: " << data << endl;
outf << "bin: " << dectobin(atoi(data))<<endl;
outf << "razr: " << r;
//for(int j=0; j<datasize; j++) outf << dectobin(int(data[j]));
delete[] data;
outf.close();
cout << outfn << " ok!";
return 0;
}

//---[ dectobin ]---------------------------------------------------------------
char *dectobin(int n, int jmp){
int ost=0;
int i=0;
int razr=0;
static char pref[] = "0000";
//static char byte[]="00000000";
const int radix=2;
char *swap = new char[1];
char *byte = new char[razr+1];
razr=(int)(log(n+1)/log(2)+1);
for(i=0; i<razr; i++) byte[i]='0';
byte[razr]='\0';
itoa(n, swap, 10);
switch(jmp){
case 0: i=strlen(byte)-1; break;
case 1: i=strlen(pref)-1; break;
default : i=8;
};

do{
ost=n-(int(n/radix)*radix);
n=int(n/radix);
// if(ost==1) itoa(ost,swap,10);
// if(ost==0) itoa(0,swap,10);
itoa(ost,swap,10);
switch(jmp){
case 0: byte[i]=swap[0];
case 1: pref[i]=swap[0];
};
i--;
}while(n>0);
delete[] swap;
switch(jmp){
case 0: return byte;
case 1: return pref;
};
}



    Вверх

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Харьков Форум > Hi-Tech... > Железо

Быстрый переход


Часовой пояс GMT +2, время: 06:52.


Харьков Форум Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.