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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2010, 19:56   #1
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию Шифрование Хаффмана

Я не могу понять, у меня компилятор Билдера выводит ошибку что счетчик i у меня не определен, не могли бы указать, в чем слажал, вот сам код:
Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <math.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "windows.h"
struct TDirection;
struct TDirection{
        TDirection * left;
        TDirection * right;
        char SWords;
        int Count;
};
typedef TDirection * TRefs;
typedef char Str[30];
        void IntMass(TRefs * TMassive);
        void InsMass(char SWords,TRefs * TMassive);
        void TSortMassive(TRefs * TMassive);
        TRefs CreateTreeHaffman(TRefs * TMassive); WriteCodes(TRefs Root,char * string);
void main()
{
        int i=0;
        char SWords,Filename[30];
        TRefs Root=NULL;
        TRefs TMassive[100];
        IntMass(TMassive);
        cout<<"\n Insert Filename: ";
                cin>>Filename;
        ifstream FileOpen;
                FileOpen.open(Filename);
                if(!FileOpen){cout<<"\n Filne :"<<Filename<<" Not found"; system("pause"); exit(1);}
                        while(!FileOpen.eof()){
                                FileOpen>>SWords;
                                        if(FileOpen.good()) InsMass(SWords,TMassive);

                                Root=CreateTreeHaffman(TMassive);
                                WriteCodes(Root,"");
                        }
                system("pause");
                exit(1);


}
void IntMass(TRefs * TMassive)
{
        int i=0;
        for(i=0;i<100;i++){
                TMassive[i]=NULL;
        }
}

void InsMass(char SWords,TRefs * TMassive)
{
        int i=0;
        bool Result=false;
        while(TMassive[i]!=NULL)
        {
                if(TMassive[i]->SWords==SWords){
                        TMassive[i]->Count++;
                        Result=true;
                }
                i++;
         }
         if(Result!=true){
                TMassive[i]=new TDirection;
                TMassive[i]->SWords=SWords;
                TMassive[i]->Count=1;
                TMassive[i]->left=NULL;
                TMassive[i]->right=NULL;
         }
}
void TSortMassive(TRefs * TMassive)
{
        int i=0;
        TRefs Perem;
                for(int ol=0;ol<100;ol++){
                        while(TMassive[i]!=NULL){
                              if((TMassive[i+1]!=NULL)&&(TMassive[i]->Count < TMassive[i+1]->Count))
                              {
                                Perem=TMassive[i];
                                TMassive[i]=TMassive[i+1];
                                TMassive[i+1]=Perem;
                              }
                         i++;
                        }
                i=0;
                }
}
TRefs CreateTreeHaffman(TRefs * TMassive){
        int i=0;
	TDirection * Perem = NULL;
        	while (TMassive[1]!=NULL){
                	TSortMassive(TMassive); 
                        	while (TMassive[i]!=NULL){ 
                                        i++;
	                        }
	Perem=new TDirection; 
	Perem->left=TMassive[i-2];
	Perem->right=TMassive[i-1];
	Perem->Count=TMassive[i-2]->Count+TMassive[i-1]->Count;
	TMassive[i-1]=NULL; 
	TMassive[i-2]=Perem; 
	i=0;
	}
	return TMassive[0]; 
 }
void WriteCodes(TRefs Root,char * Str){
char left[30],rigth[30]; 
        if (Root->left==Root->right){  //åñëè ó äåðåâà íàéäåí ëèñò, òî ìîæíî âûâîäèòü áóêâó è êîä
		cout<<Root->SWords<<' '<<Str<<"\n";
        }
	else {
 while (Str[i]!=NULL)
                 {
			left[i]=Str[i];
			right[i]=Str[i];
			i++;
                 }
		        left[i]='1';
	        	right[i]='0';
		        left[i+1]=NULL;
		        right[i+1]=NULL;
		        WriteCodes(Root->left,left);
		        WriteCodes(Root->right,right);
        }

	return;
}
вот сами ошибки:
Цитата:
Build
[C++ Warning] Unit1.cpp(49): W8004 'i' is assigned a value that is never used
[C++ Error] Unit1.cpp(119): E2451 Undefined symbol 'i'
[C++ Error] Unit1.cpp(130): E2034 Cannot convert 'ios_base & (*)(ios_base &)' to 'char *'
[C++ Error] Unit1.cpp(130): E2342 Type mismatch in parameter 'Str' (wanted 'char *', got 'ios_base & (*)(ios_base &)')
Извините, но сам не могу понять, почему у меня возникает данная ошибка
ZET78 вне форума Ответить с цитированием
Старый 23.10.2010, 20:01   #2
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Код:
[C++ Error] Unit1.cpp(119): E2451 Undefined symbol 'i'
Использование неизвестной переменной i. Определи ее сначала. Уточнение - посмотри самую последнюю функцию. Там ты используешь счетчик цикла, предварительно не определив его.
Код:
[C++ Error] Unit1.cpp(130): E2034 Cannot convert 'ios_base & (*)(ios_base &)' to 'char *'
[C++ Error] Unit1.cpp(130): E2342 Type mismatch in parameter 'Str' (wanted 'char *', got 'ios_base & (*)(ios_base &)')
В первом случае программа не может перевести параметр 'ios_base & (*)(ios_base &)' в *Char. Посмотри внимательно ту строчку, и те параметры которыми ты оперируешь. Во втором случае - программа ждет параметр *Char , а получает 'ios_base & (*)(ios_base &)'. Тоже приведи параметры в соответствие
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий

Последний раз редактировалось Xeonc; 23.10.2010 в 20:03.
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 20:02   #3
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию

Спасибо, сейчас попробуй исправить!
ZET78 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архиватор Хаффмана zetrix Софт 17 15.03.2014 13:45
Код Хаффмана Evgeny139 Помощь студентам 4 11.12.2010 09:33
Алгоритм Хаффмана 0479 Помощь студентам 1 15.09.2010 11:53
Алгоритм Хаффмана. Vetal115 Общие вопросы по Java, Java SE, Kotlin 0 22.04.2010 22:23
Вопрос по кодам Хаффмана BaSoff Общие вопросы C/C++ 5 29.03.2010 00:42