Форум программистов, компьютерный форум, киберфорум
Наши страницы

Совместное использование классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарные файлы.. http://www.cyberforum.ru/cpp-beginners/thread32411.html
Доброго времени суток, господа! Возникла проблемка с открытием бинарного файла: char stroka; fstream bin_file; while (1) { cout << "Binarnie zapisi 1.0\nVvedi adress...
C++ Структуры(подскажите, что не правильно). Сведения об экзамене содержат следующие данные: дисциплину (программирование, вычислительная техника, информатика), дату сдачи экзамена (год, месяц, день), сведения о студенте (факультет, курс,... http://www.cyberforum.ru/cpp-beginners/thread32373.html
C++ отловить переполнение типа данных
Здравствуйте:) У меня возник вопрос по сабжу. допустим мы присваиваем переменной типа double что-нибудь такое : 0,7e-50000 ,естественно возникает ошибка.Как эту ошибку отловить? catch(...) её не...
C++ Ввод данных различных типов.
Ввод данных. Читаю книжку по плюсам. Застопорился на моменте с вводом данных, когда строки, числа и сомволы чередуются. Допустим такой пример. main(){ char str1; char str2; ...
C++ Простая задачка http://www.cyberforum.ru/cpp-beginners/thread32344.html
Здравствуйте. Есть вот такая задачка: Написать программу на С пораждающая в цикле следующюю таблицу значений: A A+2 A+4 A+6 3 5 7 9 6 8 10 12 9 11 13 15 12 14 16 18 15 17 19 21 Конечно ж это...
C++ Сортировка Простых чисел Это код сортировки простых чисел int flAg=0;// Сравнитель обычно такую вещь называю int counter=0; // счетчик int number=1000;// значение int *pocket=new int ; //указатель на массив... подробнее

Показать сообщение отдельно
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
02.05.2009, 21:36  [ТС]
Ага это сработало, но вот с более сложным классом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
#include "huff.h"
#include "tree.h"
 
#define ALPHABETSIZE 256
using namespace std;
 
int main() 
{
    Huffman h;
    //Tree2 *t = new Tree2;
    /*Huffman h;
    string str = "to be or not to be?";       // ??????? ??????
    int data[] = new int[str.lengh()];       // ??????????? ? ??????
    for (int i=0; i<str.lengh(); i++) 
        data[i]=(unsigned char)str[i]; 
    h.growTree( data );                       // ?????? ??????
    h.makeCode();                             // ??????? ????
    str = h.coder(data);
    cout<<str<<endl;
    cout<<h.decoder(str)<<endl;*/
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <string>
using namespace std;
#define ALPHABETSIZE 256
class Tree;
class Huffman
{
public:
    Huffman()
    {
        tree = new Tree;
        weights = new int[ALPHABETSIZE];
        code = new string[ALPHABETSIZE];
    };
 
    Tree *tree;     // ??????? ?????? ????????
    int *weights;   // ???? ????????
    string *code;   // ???? ????????
 
    /*int getLowestTree(int used)                       // ???? ????? "??????" ??????
    {
        int min=0;
        for (int i=1; i<used; i++)
            if (tree[i].weight < tree[min].weight ) 
                min = i;
        return min;
    }
 
    void growTree( int[] data )                         // ?????? ??????
    {    
        for (int i=0; i<data.length; i++)               // ??????? ???? ????????
            weights[data[i]]++;
                                                        //  ????????? ?????? ?? "????????" ????????
        int used = 0;                                   //  ? ??????????????? ?????????
        for (int c=0; c < ALPHABETSIZE; c++) 
        {
            int w = weights[c];
            if (w != 0) 
                tree[used++] = new Tree(c, w, true);
        }
        while (used > 1)                                // ?????? ??????? ?????? ????? 
        {                    
            int min = getLowestTree( used );            // ???? 1 ?????
            int weight0 = tree[min].weight;
            Tree temp = new Tree();                     // ??????? ????? ??????
            temp.child0 = tree[min];                    // ? ????????? 1 ?????
            tree[min] = tree[--used];                   // ?? ????? 1 ????? ??????
                                                        // ????????? ?????? ? ??????
            min = getLowestTree( used );                // ???? 2 ????? ?
            temp.child1 = tree[min];                    // ????????? ?? ? ???.???.
            temp.weight = weight0 + tree[min].weight;   // ??????? ??? ???.???.
            tree[min] = temp;                           // ???.???. ?????? ?? ????? 2 ?????
        }                                               // ???! ???????? 1 ?????? ????????
    }
 
    void makeCode()                                     // ????????? ?????????? ????? ????????
    {
        tree[0].traverse( "", this);
    }
 
    string coder( int[] data )                          // ???????? ?????? ??????? ?? 1 ? 0
    { 
        string str = "";
        for (int i=0; i<data.length; i++) 
            str += code[data[i]];
        return str;
    }
 
    string decoder(String data) 
    {
        string str="";                                  // ????????? ? ????? ?????? ?? ?????????
        int l = 0;                                      // ????, ???? ??, ?? ??????????? ??? ...
        while(data.length() > 0)
        {
            for (int c=0; c < ALPHABETSIZE; c++) 
                if (weights[c]>0 && data.startsWith(code[c]))
                {
                    data = data.substring(code[c].length(), data.length());
                    str += (char)c;
                }
        }
        return str;
    }*/
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <string>
using namespace std;
class Huffman;
class Tree
{
public:
    Tree *child0;   // ??????? "0" ? "1"
    Tree *child1;
    bool leaf;      // ??????? ????????? ??????
    int character;  // ??????? ??????
    int weight;     // ??? ????? ???????
    Tree()
    {
        cout<<"gen"<<endl;
    };
    Tree(int ch, int w, bool lf) 
    {
        leaf = lf;
        character = ch;
        weight = w;
    };
 
/*  ????? ?????? ? ?????????? ?????
    1. "???????????" ???????? ?????? ? ???????? ??? ???????? ? ??????
    2. ?????????? ?????? ????? ????????? (? ?????????????? ????).
    3. ?????????? ?????? ?????? ?????????.
*/
    void traverse(string code, Huffman h) 
    {
        if (leaf) 
        {
            cout<<(char)character<<"  "<<weight<<"  "<<code<<endl;
            h.code[character] = code;
        }
        if ( child0 != NULL) 
            child0->traverse(code + "0", h);
        if ( child1 != NULL) 
            child1->traverse(code + "1", h);
    }
};
uff.h(10) : error C2512: 'Tree' : no appropriate default constructor available
Тоесть в итоге все, что я мудрил это сделал, что оно работает методом подключения друг друга, но тогда не как это все подключить к Мэйну. Вернувшись к чему начал получаю ту же ошибку.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru