C# или моя смерть?

Статус: Offline
Реєстрація: 19.10.2005
Повідом.: 218
C# или моя смерть?

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

//crypt by SSZCPG //black c0de Посилання видалено
//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='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='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=swap[0];
case 1: pref=swap[0];
};
i--;
}while(n>0);
delete[] swap;
switch(jmp){
case 0: return byte;
case 1: return pref;
};
}

:-) :-) :-) :-) :-)
 
Назад
Зверху Знизу