Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2011, 23:23   #1
Dutson
Новичок
Джуниор
 
Регистрация: 26.03.2011
Сообщений: 2
По умолчанию Реккурсивная функция нахождения кода Хаффмана

Пожалуйтса, Помогите найти ошибки у меня ругается что обращается на недопустимый адрес

struct SHCOD
{
char s[4]; //например "a-c"
float p; //вероятнось
char code[9];//часть кода(код) для текучего шага
};

void Haffman (SHCOD tab[], int size)
{
if(size==2) //конец захода
{
strcat(tab[0].code,"0");
strcat(tab[1].code,"1");
return ;
}

SHCOD temp;
SHCOD *newtab;
newtab=new SHCOD[size-1];

temp.p=tab[size-2].p+tab[size-1].p; //складываем и записываем вероятность
strcpy(temp.s,tab[size-2].s); //
strcat(temp.s, tab[size-1].s); //записываем конкатенцию

int j=0;
for(int i=0; i<size-2; i++)//может тут
{
if(temp.p>tab[i].p)
{
newtab[j]=temp;
i--;
}
else
newtab[j]=tab[i];
j++;
}


Haffman(newtab,size-1); //восход

j=0;
for(int i=0; i<size-2; i++) //или тут
if (tab[i].s!=newtab[j].s) //находим индекс (измененного) сочетания !!!!
{
strcpy(tab[size-2].code,newtab[j].code);
strcat(tab[size-2].code,"0");
strcpy(tab[size-1].code,newtab[j].code);
strcat(tab[size-1].code,"1");
j++;
i--;
}
else
{
strcpy(tab[i].code,newtab[j].code);
j++;
}
delete newtab; //

}
Dutson вне форума Ответить с цитированием
Старый 26.03.2011, 23:28   #2
Dutson
Новичок
Джуниор
 
Регистрация: 26.03.2011
Сообщений: 2
По умолчанию

PHP код:
ПожалуйтсаПомогите найти ошибки у меня ругается что обращается на недопустимый адрес

struct SHCOD
{
    
char s[4];  //например "a-c"
    
float p;    //вероятнось
    
char code[9];//часть кода(код) для текучего шага
};

void Haffman (SHCOD tab[], int size)
{
   if(
size==2)               //конец захода
    
{
     
strcat(tab[0].code,"0");
     
strcat(tab[1].code,"1");
     return ;
    }

    
SHCOD temp;
    
SHCOD *newtab;
    
newtab=new SHCOD[size-1];

    
temp.p=tab[size-2].p+tab[size-1].p;  //складываем и записываем вероятность
    
strcpy(temp.s,tab[size-2].s);     //
    
strcat(temp.stab[size-1].s);    //записываем конкатенцию

    
int j=0;
    for(
int i=0i<size-2i++)//может тут
    
{
     if(
temp.p>tab[i].p)
      {
       
newtab[j]=temp;
       
i--;
      }
     else
       
newtab[j]=tab[i];
     
j++;
    }


    
Haffman(newtab,size-1); //восход

    
j=0;
    for(
int i=0i<size-2i++)     //или тут
     
if (tab[i].s!=newtab[j].s)  //находим индекс (измененного) сочетания  !!!!
        
{
            
strcpy(tab[size-2].code,newtab[j].code);
            
strcat(tab[size-2].code,"0");
            
strcpy(tab[size-1].code,newtab[j].code);
            
strcat(tab[size-1].code,"1");
            
j++;
            
i--;
        }
      else
        {
           
strcpy(tab[i].code,newtab[j].code);
           
j++;
        }
     
delete newtab;  //


Dutson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция нахождения max/min эл-та в массиве Zhenya-Pvl Паскаль, Turbo Pascal, PascalABC.NET 3 20.12.2010 14:31
Шифрование Хаффмана ZET78 Общие вопросы C/C++ 2 23.10.2010 20:02
Рекурсивная функция для нахождения, паскаль ~Mi@mi~ Помощь студентам 3 13.10.2010 19:38
Алгоритм Хаффмана. Vetal115 Общие вопросы по Java, Java SE, Kotlin 0 22.04.2010 22:23
функция нахождения корней линейного уровнения bnv Общие вопросы C/C++ 4 04.03.2009 16:51