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

Не могу разобраться с ошибками, наследование и шаблоны - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ C int всё нормально, а с double нет http://www.cyberforum.ru/cpp-beginners/thread687412.html
#include <stdio.h> double celcius(double pahr); int main() { double a = 70.0; double result; result = celsius(a);
C++ Классы Доброго времени суток! Реализую систему окон и контролов. Вот пример: class Control { public: void draw(); void set_type(int type_id); http://www.cyberforum.ru/cpp-beginners/thread687399.html
Как зделать makefile в VC2010 C++
Я конечно в этом деле еще терем-изба темная , но столкнулся с потребностью makefile в VC2010 , как я вроде бы понял в VC сам проект должен собирать и выполнять все файлы в нем. У меня в проекте 5 заголовочных файлов и 2 исходных все по отдельности компилируються и выводят .exe , вот... У меня же в одном исходном файле прописано окно 100 * 200 , но заданного окна нет . Я так подозреваю что...
C++ Построчное чтение из текстового файла
Подскажите плз, как считать не только первую строку, но и все последующие в файле? #include <string.h> #include <stdio.h> int main(void) { FILE *stream; char msg = "this is a test"; char buf;
C++ Сверточный и каскадный код http://www.cyberforum.ru/cpp-beginners/thread687365.html
Нужно написать помехоустойчивый код. Он должен состоять из каскадного кода (на основе кода Рида-Соломона), свёрточного кода и алгоритма декодирования Витерби. Пока я более-менее разобрался только с кодом Р-С по книгам: 1. Б. Скляр / Цифровая связь / Москва, 2003г. 2. Р. Морелос-Сарагоса / МИР Связи / Москва, 2005г. Во второй книге описаны "двоичные свёрточные коды", но мне там не сильно...
C++ Сосчитать сколько рядов Если в скобках указана команда или переменная, тогда их обязательно надо использовать при выполнении задания. Ввести в файл list.txt всю информацию (файлы и каталоги), которая находится в текущем каталоге. Всю информацию надо сортировать по времени ($HOME) - ls -t < $HOME > list.txt С помощью команды grep показать все каталоги текущей директории - grep -r Сосчитать сколько рядов находится в... подробнее

Показать сообщение отдельно
5Hur1K
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 5
03.11.2012, 04:58     Не могу разобраться с ошибками, наследование и шаблоны
Задание:
Смоделировать стек на базе статического массива по заданию. Написать основные операции для работы со стеком (push, pop, top, empty, full) . Для этого (если в задании не указан иной способ) в программе на входе задать последовательность из К (К> 10) целых чисел (числа вводить с клавиатуры). Все положительные числа последовательно заносить в стек, а каждое отрицательное число должно изымать из стека один элемент. Отобразить динамику содержания стека при обработке заданной последовательности. Входную последовательность чисел задать такой, чтобы она демонстрировала работу основных операций и генерировала возникновения ситуаций "потери значимости стека" (stack underflow) и "переполнение стека" (stack overflow).
Примечание: после реализации стека работать с ним как с абстрактным типом данных, а не как с массивом.

Написать программу для последовательного хранения двух стеков в массиве из N элементов (стеки размещаются друг за другом: первая половина массива - первый стек, вторая половина массива - второй стек). На входе задаются пары целых чисел (i, j), 1  i  2. Число j пары (i, j) с j> 0 добавляется в i-й стек; число j пары (i, j), с j <= 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <iostream>
#include <locale>
#include <windows.h>
#include <cassert>
using namespace std;
 
template <class T>
class MyStack
{
protected:
    T *massive;
    int size_row;
 
public:
    MyStack():size_row(0){};
    MyStack(int row){
        size_row=row;
        massive=new T [size_row];
    };
    ~MyStack(){delete [] massive;};
    
    virtual bool full();
    virtual void push(T obj=0);
    virtual bool empty();
    virtual void viewStack();
    virtual T top();
    virtual void pop();
    virtual T maxValue();
};
//-------------------------------------------------------------------
template <class T>
class Stack1: public MyStack <T>
{
protected:
    int index1;
 
public:
    Stack1(){
        index1=0;
    };
    ~Stack1();
 
    virtual bool full(){
        if(index1==(this->size_row/2)) return true;
        else return false;
    }
    virtual void push(T obj){
        if(full()){
            cout<<"\nstack1 overflow";
            index1--;
        }
        else this->massive[index1++]=obj;
    }
    virtual bool empty(){
        if(index1==0) return true;
        else return false;
    }
    virtual void viewStack(){
        for(int k=0;k<index1;k++){
            cout<<"Stack2: "<<this->massive[k]<<" ";
        }
        cout<<endl;
    }
    virtual T top(){
        return this->massive[index1-1];
    }
    virtual void pop(){
        if(empty()) cout<<"stack1 underflow";
        else --index1;
    }
    virtual T maxValue(){
        T tmp;
        tmp=this->massive[index1];
        for(int k=index1-1;k>=0;k--){
            if(this->massive[k]>tmp) tmp=this->massive[k];
        }
        return tmp;
    }
};
//-------------------------------------------------------------------
template <class T>
class Stack2: public MyStack <T>
{
protected:
    int index2;
 
public:
    Stack2(){
        index2=MyStack<T>::size_row/2;
    };
    ~Stack2();
 
    virtual bool full(){
        if(index2==this->size_row) return true;
        else return false;
    }
    virtual void push(T obj){
        if(full()) cout<<"\nstack2 overflow";
        else this->massive[index2++]=obj;
    }
    virtual bool empty(){
        if(index2==(this->size_row/2)) return true;
        else return false;
    }
    virtual void viewStack(){
        for(int k=MyStack<T>::size_row/2;k<index2;k++){
            cout<<"Stack1: "<<this->massive[k]<<" ";
        }
        cout<<endl;
    }
    virtual T top(){
        return this->massive[index2-1];
    }
    virtual void pop(){
        if(empty()) cout<<"stack2 underflow";
        else --index2;
    }
    virtual T maxValue(){
        T tmp;
        tmp=this->massive[index2];
        for(int k=index2-1;k>=size_row/2;k--){
            if(this->massive[k]>tmp) tmp=this->massive[k];
        }
        return tmp;
    }
};
//-------------------------------------------------------------------
//-------------------------------------------------------------------
void main()
{
    setlocale(LC_CTYPE,"Russian");
 
    int N, i, j;
    cout<<"Введите N: ";
    cin>>N;
 
    MyStack <int> massive(N);
    Stack1 <int> set1;
    Stack2 <int> set2;
    for(int k=0;k<N;k++){
        cout<<"Введите пару чисел i, j: ";
        cin>>i>>j;
        assert(i==1 || i==2);
        if(i==1){
            if(j>0) set1.push(j);
            if(j<=0) set1.pop();
            set1.viewStack();
        }
        if(i==2){
            if(j>0) set2.push(j);
            if(j<=0) set2.pop();
            set2.viewStack();
        }
    }
    cout<<"Максимальное значение Stack1: "<<set1.maxValue()<<endl;
    cout<<"Максимальное значение Stack2: "<<set2.maxValue()<<endl;
}
Ошибки
Код
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall MyStack<int>::push(int)" (?push@?$MyStack@H@@UAEXH@Z)"
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall MyStack<int>::empty(void)" (?empty@?$MyStack@H@@UAE_NXZ)"
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall MyStack<int>::viewStack(void)" (?viewStack@?$MyStack@H@@UAEXXZ)"
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual int __thiscall MyStack<int>::top(void)" (?top@?$MyStack@H@@UAEHXZ)"
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall MyStack<int>::pop(void)" (?pop@?$MyStack@H@@UAEXXZ)"
1>Исходный код.obj : error LNK2001: неразрешенный внешний символ ""public: virtual int __thiscall MyStack<int>::maxValue(void)" (?maxValue@?$MyStack@H@@UAEHXZ)"
1>Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack1<int>::~Stack1<int>(void)" (??1?$Stack1@H@@QAE@XZ) в функции _main
1>Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack2<int>::~Stack2<int>(void)" (??1?$Stack2@H@@QAE@XZ) в функции _main
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru