Форум программистов, компьютерный форум CyberForum.ru

Алгоритм обработки цветного изображения LZW - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму минимального и максимального элементов в последовательности http://www.cyberforum.ru/cpp-beginners/thread662082.html
Дана последовательность целых чисел за которой следует 0. Найти сумму минимального и максимального элементов в этой последовательности. Помогите сделать задачу с помощью цикла do...while
C++ Си плюс плюс доработать программу программа календарь не получается сделать ввод данных так как нужно: Введите год или месяц и год: июНЬ 2099 Введите год или месяц и год: 2109 #include <iostream> #include <stdio.h> http://www.cyberforum.ru/cpp-beginners/thread662080.html
C++ Среда + компилятор
Всем доброго времени суток. Очень долгое время не решался написать по столь ерундовому вопросу, на самом деле, но никак не могу найти решения. Я только-только начал изучать язык, и в среде мне необходима возможность свободно изменять код и тут же смотреть результат (что, собственно, само собой разумеющееся). Первый раз тыкнулся в MS Express, но тут же столкнулся с проблемой - дома все отлично...
C++ DataGridView > DataSet > XML Экспорт
Привет всем!! Вот такая проблемка , не могу сохранить содержимое таблици в xml файл через DataSet Пишет "В экземпляре объекта не задана ссылка на объект" Я В C++ Только начинаю так что плиз помогите )) Вот Код: Пытался и так: DataTable^ Table = gcnew DataTable("Table"); Table->DataSet->Tables->Add((DataTable^)dataGridView1->DataSource); Table->DataSet->WriteXml("E:\\list.xml"); И вот...
C++ написать программу на С++, приближенно вычисляющую опред. интеграл http://www.cyberforum.ru/cpp-beginners/thread662016.html
Приближенное вычисление интеграла по формуле прямоугольников. Написать программу, приближенно вычисляющую интеграл по заданным вещественным числам a, b, c, d (a<b, c<d) \int_{a}^{b}sin(exp^x) Интеграл вычисляется приближенно с заданной точностью e>0 по формуле прямоугольников. Добавлено через 18 минут выдает ошибки:1)pow: ни одна из 6 перегрузок не может преобразовать все типы аргументов...
C++ Вывод строки на экран с использованием esp-последовательности ДОБРЫЙ ДЕНЬ,в нашем ВУЗе ввели дисциплину по С++,я в ней-полный чайник(((((помогите,пожалуйста,с написанием след.программ(((((заранее буду благодарна))))) Задание 1. Вывод строки на экран с использованием esp-последовательности Используя esc–последовательности, выведите на экран следующий текст. 1. Это строка, иначе –“стринг”, иначе – “строковый литерал” ... подробнее

Показать сообщение отдельно
пацанчо
-6 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 38
02.10.2012, 15:58     Алгоритм обработки цветного изображения LZW
есть код этого алгоритма для консоли, помогите сделать его в обычные исполняемые член-функции класса С++.//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <tchar.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{ void compress(FILE * input,FILE * output,lib * lib)
{
char str[TABLE_SIZE];
FILE * inp=malloc(sizeof(FILE));
char buffer[TABLE_SIZE];
int i=0;
char tmp;
int find_res=0;
int prev_find_res=0;
int rItoa;
int rFind;
while(1)
{
checktable(lib);
inp->_ptr=input->_ptr;
inp->_cnt=input->_cnt;
tmp=fgetc(input);
str[i]=tmp;
i++;
find_res=find(str,i,lib,prev_find_res);
if (find_res==-1)
{
rFind=find(str,i-1,lib,prev_find_res);
putc_bin(rFind,output);
add(lib,str,i);
i=0;
input->_ptr=inp->_ptr;
input->_cnt=inp->_cnt;
if (tmp==EOF)
{
return;
}
}
prev_find_res=find_res;
}
}
void decompress(FILE * input, FILE * output, lib * lib)
{
int code;
FILE * inp=malloc(sizeof(FILE));
int i=0;
int p=0;
int find;
int last_free=0;
char tmp=0;
char str[TABLE_SIZE+1];
char oldstr[TABLE_SIZE+1];
char k;
int old;
old=read_code(input);
fputc(old,output);
k=lib->table[old].data[0];
while(1)
{
code=read_code(input);
if (code==-1)
return;
find=lib->table[code].data[0];
if (find<0)
{
last_free=copy(str,lib->table[old].data);
str[last_free]=k;
last_free++;
}
else
{
last_free=copy(str,lib->table[code].data);
}
for (i=0;i<last_free;i++)
fputc(str[i],output);
k=str[0];
last_free=copy(oldstr,lib->table[old].data);
oldstr[last_free]=k;
checktable(lib);
add(lib,oldstr,last_free+1);
old=code;
}
}
void main(int count,char * value[])
{
lib lib;
int i;
int p=-1;
FILE * input=NULL;
FILE * output=NULL;
if (!strcmp(value[1],"help"))
{
printf("To compress: -c input_file compressed_file\n");
printf("To decompress: -u compressed_file output_file\n");
p=-1;
}
if (count==0)
{
printf("Enter help");
p=-1;
}
if (!strcmp(value[1],"-c"))&&count
{
printf("peedar");
}
for(i=0;i<256;i++)
{
SafeAr[i]=i;
}
lib.table=malloc(sizeof(sAr)*TABLE_SIZE);
init_lib(&lib);
switch(p)
{
case 0:
input=fopen("S:\\project\\output.lzw","rb");
output=fopen("S:\\project\\decode.txt","wb");
decompress(input,output,&lib);
break;
case 1:
input=fopen("S:\\project\\input.txt","r");
output=fopen("S:\\project\\output.lzw","w");
compress(input,output,&lib);
break;
default:
break;
}
};
//---------------------------------------------------------------------------



и файл с расширением .h

char SafeAr[256];
typedef
struct sAr{
unsigned len;
unsigned hash;
char data[KEY_LEN];
}sAr;
typedef
struct lib{
sAr * table;
unsigned top;
}lib;
void init_lib(lib * lib);
int checktable(lib * lib);
void fill_random(FILE * input,int len);
int read_code(FILE * input);
int copy(char *str1,char *str2);
unsigned jenk(char *key,unsigned len);
int compare(char * str1,int len1,char * str2,int len2);
int find(char * str,unsigned len,lib * lib,unsigned apr_pos);
int add(lib * lib,char * str,int len);
void putc_bin(int code,FILE * output);
int add(lib * lib,char * str,int len)
{
int i=lib->top;
int p;
int exist=0;
i=lib->top;
exist=find(str,len,lib,0);
if (exist!=-1)
return exist;
for(p=0;p<len;p++)
{
lib->table[i].data[p]=str[p];
}

lib->table[i].hash=jenk(lib->table[i].data,len);
lib->top++;
lib->table[i].len=len;
return i;
}
int find(char * str,unsigned len,lib * lib,unsigned apr_pos)
{
unsigned i=0;
unsigned hash_str=jenk(str,len);
for(i=apr_pos;i<=lib->top;i++)
{
if(hash_str==lib->table[i].hash)
{
if (compare(lib->table[i].data,lib->table[i].len,str,len))
return i;
}
}
for(i=0;i<=apr_pos;i++)
{
if(hash_str==lib->table[i].hash)
{
if (compare(lib->table[i].data,lib->table[i].len,str,len))
return i;
}
}
return -1;
}
int compare(char * str1,int len1,char * str2,int len2)
{
int i;
if (len1!=len2)
return 0;
for (i=0;i<len1;i++)
{
if (str1[i]!=str2[i])
return 0;
}
return 1;
}
unsigned jenk(char *key,unsigned len)
{
unsigned hash = 0;
unsigned i;
for (i=0; i<len; i++)
{
hash += key[i];
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash;
}
int copy(char *str1,char *str2)
{
int p=0;
while (str2[p]>-1)
{
str1[p]=str2[p];
p++;
}
str1[p]=-52;
return p;
}
int read_code(FILE * input)
{
int i=0;
char tmp;
char code[TABLE_SIZE+1];
tmp=fgetc(input);
if (tmp==EOF)
{
return -1;
}
while (!isspace(tmp))
{
code[i]=tmp;
i++;
tmp=fgetc(input);
}
code[i+1]=-52;
return atoi(code);
}
void fill_random(FILE * input,int len)
{
int i;
int p;
srand(time(NULL));
for (i=0;i<len;i++)
{
p=rand();
p=p%64+64;
fputc( p,input);
}
}
int checktable(lib * lib)
{
//if (table[TABLE_SIZE].i!=-1)
if (lib->top==TABLE_SIZE)
{
init_lib(lib);
return 0;
}
return 1;
}
void init_lib(lib * lib)
{
int i;
for(i=0;i<256;i++)
{
lib->table[i].data[0]=SafeAr[i];
lib->table[i].data[1]=-52;
lib->table[i].len=1;
lib->table[i].hash=jenk(lib->table[i].data,1);
}
lib->top=256;
for(i=256;i<=TABLE_SIZE;i++)
{
lib->table[i].data[0]=-52;
lib->table[i].len=0;
}
}
void putc_bin(int code,FILE * output)
{

int i=0;
int p;
int s_Ar[32];
while (i<32)
{
s_Ar[i]=(code&1);
code=code>>1;
i++;
}
fwrite(s_Ar,sizeof(int),32,output);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru