середа, 24 червня 2015 р.

Моделю в AutoCAD






Часткові речення

Чому в людській мові нема часткових речень?

Кожне речення - завершена думка.

А так би було можна "Яка різниця між свинею" і виходить часткове речення, як потім можна доповнити чимось, що захочуть порівняти зі свинею)

понеділок, 22 червня 2015 р.

 Махнув в Жовкву велосипедом







четвер, 18 червня 2015 р.

Сьогодні видав речення

 "Розроблено детальний план подальшого дослідження, що складається з кількох етапів, кожен з яких відповідає певному розділу дисертації, а також методику проведення роботи, що дає змогу швидко та ефективно виконати поставлену задачу"

Кажуть що чотко.

Я собі і герба підмутив.


четвер, 17 листопада 2011 р.

Scrembler

#include
#include
//Function returns array
//First argument returns length of array
//Second argument is file from which we will read
unsigned char * str(int * a,FILE * f) {
//Input is temporary variable
//file is flag (use we file or not)
unsigned char input,file=0;
//Counter
int count = 0,size_char = sizeof(unsigned char);
//Pointers for dinamic input
unsigned char * chars = NULL,* more_chars;
//Do we use file or not?
if(f != 0){
file = 1;
}
//While we not get end of line
while (input != 10) {
//Reading character from file or stdin
if(!file) {
scanf ("%c", &input);
}
else {
fscanf(f,"%c",&input);
}
//Verification of charater
if(input != '0' && input != '1' && input != 10) {
free(chars);
puts("Wrong number\n");
exit(EXIT_FAILURE);
}
//Increase length of array
*a = count;
//Increase the counter
count++;
//Reallocating array
more_chars = (unsigned char*) realloc (chars, count * size_char);
//Reallocating succseeded
if(more_chars != NULL) {
chars = more_chars;
chars[count - 1] = input;
}
//And no succseeded
else {
free (chars);
puts ("Error allocating memory\n");
exit(EXIT_FAILURE);
}
}
return chars;
}
//Function which is scrembling (descrembling)
//First argument determine what we will do (scrembling or descrembling)
//Second argument is array of ones and zeroes whih we will process
//Third argument is length of array from second argument
//Fourth argument gives us a file descriptor of file which we will output data in
unsigned char * scremble(int dis,unsigned char * d,int a,FILE * f) {
//Shift register
unsigned char c[7]={0,0,0,0,0,0,0};
//Create new array with length=a
unsigned char * e = (unsigned char*) calloc(a,sizeof(unsigned int));
//If we can`t allocate memory for array
if(!e) {
puts ("Error allocating memory\n");
exit(EXIT_FAILURE);
}
//For all elements of array
for (int i = 0; i < a; i++) {
//Calculate value for element of output array
e[i] = d[i] ^ (c[6] ^ c[5]);
//Shift register is shifted
for (int j = 6; j > 0; j--) {
//Assign current element value from previous
c[j] = c[j-1];
}
//Add element to shift array
//if we are scrembling we take value from output array
//if we are descrembling we take value from input array
c[0] = !dis ? e[i] : d[i];
}
//Output message
if(!f){
if(!dis)
printf("Scrembled: \n");
else
printf("Descrembled: \n");
}
//Output output array (tautology)
for(int i = 0; i < a; i++){
if(f)
//To file
fprintf(f,"%d",e[i]);
else
//To console
printf("%d",e[i]);
}
if(!f) {
printf("\n");
}
return e;
}
void fromkeyboard(){
//Arrays of ones and zeroes.
unsigned char * b,* c,* d;
//Counter for length of arrays.
int a = 0;
//Read array
b = str(&a,0);
//Convert symbols to numbers
for (int i = 0; i < a; i++) {
b[i] = b[i] - 48 ? 1 : 0 ;
}
//Scremble array
c = scremble(0,b,a,0);
//Descremble array
d = scremble(1,c,a,0);
}
void fromfile(const char * arg1,const char * arg2,const char * arg3){
//Arrays of ones and zeroes.
unsigned char * b,* c,* d;
//Files that we will read and write
FILE * f1,* f2,* f3;
//Counter for length of arrays
int a = 0;
//Open files
f1 = fopen(arg1,"r");
f2 = fopen(arg2,"w");
f3 = fopen(arg3,"w");
//There is no such file
if(f1 == NULL || f2 == NULL || f3 == NULL) {
puts("Unable to open file\n");
exit(EXIT_FAILURE);
}
//Read array
b = str(&a,f1);
//Convert from symbols to numbers
for (int i = 0; i < a; i++) {
b[i] = b[i] - 48 ? 1 : 0 ;
}
//Scremble array
c = scremble(0,b,a,f2);
//Descremble array
d = scremble(1,c,a,f3);
}
int main(int argc, const char * argv[])
{
switch (argc){
//If we have only one argument it means
//that we want to input symbols from keyboard.
case 1: {
fromkeyboard(); //Input from...
break;
}
//If we have 4 arguments we will read and write files.
case 4: {
fromfile(argv[1],argv[2],argv[3]); //Lets start!
break;
}
//If you hands are curves...
default: {
printf("You do it wrong!\n");
exit(EXIT_FAILURE);
}
}
exit(EXIT_SUCCESS);
}

Crypt

#include
#include
#include
#include
long fsize(FILE * f) {
fseek(f,0,SEEK_END);
long size = ftell(f);
fseek(f,0,SEEK_SET);
return size;
}
unsigned char * str() { /*Read string from stdin*/
unsigned char input;
int count=0;
const int sizeChar = sizeof(unsigned char);
unsigned char * chars = NULL,* more_chars;
while (input!=10) {
scanf ("%c", &input);
count++;
more_chars = (unsigned char*) realloc (chars, count * sizeChar);
if(more_chars != NULL) {
chars = more_chars;
chars[count - 1] = input;
}
else {
free (chars);
puts ("Error allocating memory");
}
}
return chars;
}
void procent(long size,FILE* source) {
printf("Обробка: %3.0f%%",((float)size - (float)((float)size - (float)ftell(source))) / (float)size * 100.0);
}

unsigned char rann() {
return (unsigned char)rand();
}

int encrypt(unsigned char* a,unsigned char* arg1,unsigned char* arg2,unsigned char* arg3) {
FILE* source;
FILE* target;
FILE* key;
key = fopen(arg3,"w+");
source = fopen(arg1,"r");
target = fopen(arg2,"w+");
long size = fsize(source);
unsigned char c = 0,randomm = 0,randomm1 = 0;
int alphabet[256],keyword[4];
if (*a == 'm') {
for(int j = 0;j < 256;j++) {
alphabet[j] = 256;
}
randomm=rann();
randomm1=rann();
for(int i = 0;i < 256;i++) {
int b = (int)(i * randomm + randomm1) % 256 ;
if(alphabet[b] == 256 ) {
alphabet[b] = i;
}
else {
b++;
while(alphabet[b] != 256) {
b++;
if(b == 256 ) b = 0;
}
alphabet[b] = i;
}
}
for (int i = 0;i < 256;i++) {
fputc(fabs(alphabet[i]),key);
}
int count = (int)size;
while(count) {
c = fgetc(source);
if ((count % 4096) == 0) procent(size,source);
for (int i = 0;i < 256;i++) {
if (c == alphabet[i]) fputc(i,target);
}
count--;
}
}
if (*a == 'w') {
printf("Enter key.\n> ");
unsigned char *a = str();
int b = strlen(a);
fputs(a,key);
register int count = (int)size;
while(count) {
c = fgetc(source);
if ((count % 4096) == 0) procent(size,source);
fputc((c + *(a + count % b)) % 256, target);
count--;
}

printf("Encoding completed.\n");
}
if (*a == 'c') {
int ololo=size;
unsigned char c[4];
int count = size % 4 ? (size / 4)+1 : size / 4 ;
while(count){
c[0] = c[1] = c[2] = c[3] = 0;
for (int i = 0; i < 4; i++) {
if (ololo ){
c[i] = fgetc(source);
}
ololo--;
}
fputc(c[3],target);
fputc(c[0],target);
fputc(c[1],target);
fputc(c[2],target);
count--;
}
}
fclose(source);
fclose(target);
fclose(key);
return 0;
}
int uncrypt(unsigned char *a,unsigned char* arg1,unsigned char* arg2,unsigned char* arg3) {
FILE* source;
FILE* target;
FILE* key;
key = fopen(arg3,"r");
source = fopen(arg1,"r");
target = fopen(arg2,"w+");
long size = fsize(source);
unsigned char alphabet[256],keyword[4];
unsigned char c = 0;
if(*a == 'n') {
for (int i = 0;i < 256;i++) {
alphabet[i] = fgetc(key);
alphabet[i] = (unsigned char)fabs(alphabet[i]);
}
int count = (int)size;
while(count) {
c = fgetc(source);
fputc(alphabet[c],target);
if ((count % 4096) == 0)
procent(size,source);
count--;
}
}

if (*a=='v') {
int d;
printf("Enter key.\n> ");
unsigned char *a = str();
int b = strlen(a);
register int count = (int)size;
while(count) {
c = fgetc(source);
if ((count%4096) == 0) procent(size,source);
d= (c-*(a + count % b)) >= 0 ? c - *(a + count % b) : c + 256 - *(a + count % b) ;
fputc((unsigned char)d, target);
count--;
}
}

if (*a == 'u') {
unsigned char c[4];
int ololo=size,count = size % 4 ? (size / 4)+1 : size / 4 ;
while(count){
c[0] = c[1] = c[2] = c[3] = 0;
for (int i = 0; i < 4; i++) {
if(ololo){
c[i] = fgetc(source);
}
ololo--;
}
fputc(c[1],target);
fputc(c[2],target);
fputc(c[3],target);
fputc(c[0],target);
count--;
}
printf("Encoding completed");
}
fclose(source);
fclose(target);
fclose(key);
return 0;
}
int histogram(char* arg1){
FILE* f1;
f1=fopen(arg1,"r");
int n = fsize(f1);
unsigned char array[n];
int array1[256];
for (int i=0;i<256;i++)
{
array1[i]=0;
}

for(int i=0;i
{
fscanf(f1,"%c",&array[i]);
}
for(int i=0;i<256;i++)
{
for(int j=0;j
{
if(array[j]==i) array1[i]++;
}
}
//printf("\n");
double b=0,l=0;
int max=0,min=n;
for(int i=0;i<256;i++)
{
max = max
min = min>array1[i] ? array1[i] : min;
b+=array1[i];
if (array1[i]){ printf("%3d=>%4d",i,array1[i]);
l=max/140;
for(int j=array1[i]/l;j>=0;j--){
printf("_");
}
printf("\n");
}
}
printf("M=%f\nMax=%d\nMin=%d\n",b/256.0,max,min);
return 0;
}


int main(int argc, unsigned char *argv[]) {
if (argc != 5 && argc != 3) {
printf("Bad arguments!");
exit(EXIT_FAILURE);
}
else {
switch(argv[1][0]){
case 'c' : { encrypt("c",argv[2],argv[3],argv[4]);
break;}
case 'u' : { uncrypt("u",argv[2],argv[3],argv[4]);
break;}
case 'm' : {encrypt("m",argv[2],argv[3],argv[4]);
break;}
case 'n' : {uncrypt("n",argv[2],argv[3],argv[4]);
break;}
case 'v' : {uncrypt("v",argv[2],argv[3],argv[4]);
break;}
case 'w' : {encrypt("w",argv[2],argv[3],argv[4]);
break;}
case 'f' : {histogram(argv[2]);
break;}
default : {puts("error");}
}
}
return EXIT_SUCCESS;
}

середа, 26 жовтня 2011 р.

Такі діла

Програміст -чайник, програміст - блюдце.

неділя, 9 жовтня 2011 р.

Хемінг 7,4 з бітом парності


/*
 * Код Хемінга 7,4 з бітом парності
 * Автор: Роман Шендюх
 * © 2011
 */
#include
#include
#include
#include
#include
#include
#include
#include
/*Функція out_bin() виводить байтове число в бінарному представленні*/
void out_bin (unsigned char c){
for (int i = 7; i>=0; i--) {
/*Наступний рядок перевіряє число на наявність 1 в розрядах байтового числа*/
if ((c & (unsigned short)pow(2,i))/pow(2,i)==1)
printf("1");//В випадку співпадіння виводить 1
else
printf("0");//Інакше 0, селяві
}
printf("\n");
}
/*Точка входу в програму*/
int main (){
/*Лічильник для циклів*/
int i=0;
/*В змінній c зберігаються дані, перевірочні біти і біт парності*/
/*В змінній d зберігатиметься синдром*/
unsigned char c=0,d=0;
/*Записуємо число в с і зсуваємо на 4 розряди вліво для того щоб розмістити його в 4 старших розрядахі */
c=1<<4;

out_bin(c);
/*Наступні 3 рядки обчислюють значення для перевірочних бітів*/
c^=((  ((c &64 )/64) ^ ((c & 32)/32) ^ ((c & 16)/16)  ))<<1;
c^=((  ((c & 128)/128) ^ ((c & 64)/64) ^ ((c & 32)/32)  ))<<2;
c^=((  ((c & 128)/128) ^ ((c & 64)/64) ^ ((c & 16)/16)   ))<<3;
/*Даний цикл надає значення біту парності, проводячи операцію виключного або над всіма бітами*/
for (i = 1; i < 8; i++) {
c^=((c&(1<
}
/*Вивід на дисплей числа до спотворення*/
printf("Data=       ");
out_bin(c);
/*Спотворення 1 біта в числі*/
int r=5,cor=1;
while (cor) {
printf("What bit do you want to spoil?(number)\nIf you input not a digit, you will be cursed for 7 generations!\n> ");
scanf("%d",&r);
if (r>=0 && r<8) {
c^=(1<
cor=0;
}
else {
printf("Wrong number, try again.\n");
cor=1;
}
}
//c ^= 32 ;//В нашому випадку 5 біт оскільки 2**5==32
//c^=17;
/*Визначення синдрому*/
if ((   ((c & 64)/64) ^ ((c & 32)/32) ^ ((c & 16)/16  ) ^ ((c & 2)/2) ) !=0 ){
d += 1;
}
if ((   ((c & 128)/128) ^ ((c & 64)/64) ^ ((c & 32)/32  ) ^ ((c & 4)/4) ) !=0 ){
d += 2;
}
if ((   ((c & 128)/128) ^ ((c & 64)/64)  ^ ((c & 16)/16) ^ ((c&8)/8) ) !=0 ){
d += 4;
}

/*Виведення спотворених даних на дисплей*/
printf("Spoiled=    ");
out_bin(c);
/*Виправлення помилки на основі значення синдрому*/
if (d==5) c^=1<<4;
if (d==6) c^=1<<7;
if (d==7) c^=1<<6;
if (d==3) c^=1<<5;
if (d==1) c^=1<<1;
if (d==2) c^=1<<2;
if (d==4) c^=1<<3;
/*Перевірка на парність*/
for (i = 1; i < 8; i++) {
d^=(((unsigned char)((c/(unsigned char)pow(2,i))/pow(2,i)))>>i)<<3;
}
if (!((c&1) && (d&8))){
printf("Your packet is lost!\n");
return EXIT_SUCCESS;
}
/*Вивелення виправлених даних на дисплей*/
printf("Corrected=  ");
out_bin(c);
return EXIT_SUCCESS;
}

субота, 1 жовтня 2011 р.

Manowar - Die For Metal (Music Video)

CRC-16

#include
#include
void out_bin (unsigned long int c,int len){
for (int i = len-1; i>=0; i--) {
if ((c & (unsigned int)pow(2,i))/pow(2,i)==1) printf("1");
else printf("0");
}
printf(" ");
}
unsigned short Crc16(unsigned char *pcBlock, unsigned short len)
{
unsigned short crc = 0xFFFF;
unsigned char i;
while (len--)
{
crc ^= *pcBlock++ << 8;
for (i = 0; i < 8; i++)
crc = crc & 0x8000 ? (crc << 1) ^ 0xc005 : crc << 1;
}
return crc;
}
int main (){
unsigned short c;
unsigned char a[4]={0x11,0x11,0,0};
c=Crc16(a,2);
out_bin(c,16);
printf("\n");
a[2]=c>>8;
a[3]=(unsigned char)c;
for (int i = 0; i < 4; i++) {
out_bin(a[i],8);
}
c=Crc16(a,4);
if(c==0)
printf("\nThere is no bug\n");
a[0]=0x10;
c=Crc16(a,4);
for (int i = 0; i < 4; i++) {
out_bin(a[i],8);
}
if(c!=0)
printf("\nThere is a bug\n");
}

Cicle code

#include
#include
unsigned char d[4]={0,0,0,0};
void shift(unsigned char a[8]){
unsigned char tmp=0;
tmp=a[0];
for (int i = 0; i <6; i++) {
a[i]=a[i+1];
}
a[6]=tmp;
}
void out(unsigned char *e){
for (int j = 1; j < 4; j++) {
printf("%i",*(e+j));
}
printf("\n");
}
void ololo(){
for (int i = 0; i < 4; i++) {
d[i]=0;
}
}
unsigned char *cicod(unsigned char ar[8],unsigned char b[4]){
int k=0;
for (int i = 0; i < 4; i++) {
d[i]=ar[i];
}
while(1){
for (int i = 0; i < 4; i++) {
d[i]=d[i]^b[i];
}
if(k>=3)break;
if (d[0]==0){
while(d[0]!=1 && k<4){
for (int i = 0; i < 3; i++) {
d[i]=d[i+1];
}
d[3]=ar[k+4];
k++;
}
}
}
return &d[0];
}
int main (){
unsigned char a0[8],a[8]={1,1,0,1,0,0,0,0};
unsigned char b[4]={1,0,1,1};
unsigned char *e=cicod(a,b);
/*out(e);*/
a[6]=*(e+3);
a[5]=*(e+2);
a[4]=*(e+1);
for (int i = 0; i < 7; i++) {
printf("%d",a[i]);
}
printf("\n");
ololo();
e=cicod(a,b);
/*out(e);*/
a[2]=1;
for(int i=0;i<8;i++)a0[i]=a[i];
for (int i = 0; i < 7; i++) {
printf("%i",a0[i]);
}
printf("\n");
for(int i = 0; i < 7; i++) {
ololo();
e=cicod(a0,b);
if (d[3]==1 && d[2]==0 && d[1]==0){
a[i]^=1;
break;
}
shift(a0);
}
for (int i = 0; i < 7; i++) {
printf("%i",a[i]);
}
return 0;
}