title

title


// ConsoleApplication23.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <Windows.h>

#include <time.h>

#define N 256

struct mydata

{

char ch;

int col;

float ch1;

char bincode[20];

};

void dobav(char*x, char z)

{

int i = 0;

while (x[i] != '\0')

i++;

x[i] = z;

x[i + 1] = '\0';

}

void schinys(int x, int y, mydata*ptr)

{

if (x == y)return;

if (x + 1 == y)

{

dobav((ptr + x)->bincode, '1');

dobav((ptr + y)->bincode, '0');

return;

}

int sum = 0;

for (int i = x; i <= y; i++)

{

sum = sum + (ptr + i)->col;

}

printf("in functtion : sum=%d\n", sum);

for (int i = x; i <= y; i++)

{

(ptr + i)->ch1 = (float)(ptr + i)->col/sum;

}

int k = 0;

float z = 0;

for (int i = x; i <= y; i++)

{

z = z + (ptr + i)->ch1;

if (z > 0.5)

{

k = i;

break;

}

}

for (int i = x; i < k; i++)

{

dobav((ptr + i)->bincode, '1');

}

for (int i = k; i <= y; i++)

{

dobav((ptr + i)->bincode, '0');

}schinys(k, y, ptr);

schinys(x, k - 1, ptr);

}


int obratnoe(char*x,char*y)

{

int i = 0;

while (x[i] != '\0' || y[i] != '\0')

{

if (x[i] != y[i])

return 1;

i++;

}

return 0;

}




void print(mydata*X, int n)

{

for (int i = 0; i < n; i++)

{

printf("%d %c %s \n", i + 1, (X+i)->ch,(X+i)->bincode);

}

}




void dobav(char *x,char *k)

{

int i = 0;

while (x[i] != '\0')i++;

int j = 0;

while (k[j] != '\0')

{

x[i + j] = k[j];

j++;

}

x[i + j + 1] = '\0';

}

void sort(mydata*x, int n)

{

for (int i = 0; i < n - 1; i++)

{

for (int j = 0; j < n - i - 1; j++)

{

if (x[j].col<x[j + 1].col);

{

mydata rez = x[j];

x[j + 1] = x[j + 1];

x[j + 1] = rez;

}

}

}

}

int _tmain(int argc, _TCHAR* argv[])

{


char str[20];

gets_s(str);

puts(str);

int ar[256] = { 0 }; int i = 0, q = 0;

while (str[i] != '\0')

{

ar[str[i]]++;

i++;

}

for (int i = 0; i < N; i++)

{

if (ar[i] != 0)

{

printf("%c %d\n", i, ar[i]);

q++;

}

}

mydata *ptr = new mydata[q];

mydata*pt = ptr;

for (int i = 0; i < N; i++)

{

if (ar[i]!=0)

{

ptr->ch = i;

ptr->col = ar[i];

ptr++;

}

}

ptr = pt;

print(ptr, q); printf("**************\n");

//sort(ptr, q);

for (int i = 0; i < q - 1; i++)

for (int j = 0; j < q - 1 - i; j++)

if ((ptr+j)->col<(ptr+j+1)->col)

{

mydata vs = *(ptr + j);

*(ptr + j) = *(ptr + j + 1);

*(ptr + j + 1) = vs;

}


for (int i = 0; i < q; i++)

{

(ptr + i)->bincode[0] = '\0';

}

print(ptr, q);

schinys(0, q - 1, ptr);

print(ptr, q);

char rez[200] = "\0";

i = 0;

while (str[i] != '\0')

{


char cc = str[i];

for (int i = 0; i < q; i++)

{

if ((ptr + i)->ch == cc)

dobav(rez, (ptr + i)->bincode);

}i++;

}puts(rez);


char ss[20] = "";

i = 0;

while (rez[i] != '\0')

{

dobav(ss, rez[i]);

for (int j = 0; j < q; j++)

if (obratnoe(ss, (ptr + j)->bincode) == 0)

{

printf("%c", (ptr + j)->ch);

ss[0] = '\0';

}

i++;

}printf("\n");

return 0;


}


Report Page