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

шаблоны в си++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица http://www.cyberforum.ru/cpp-beginners/thread73949.html
Пожалуйста помогите решить задачу: вывести на печать положительные элементы главной диагонали матрици X(nxn). Заранее спасибо!
C++ Релизация связанных списков Прошу администрацию извинить меня (я только первый день на форуме), аналогичная тема размещена в "С++ Builder" - не знал куда правильнее разместить данный пост, поэтому удалите один из них (если считаете нужным), впредь буду более аккуратным.... А теперь суть вопроса: Уже 2 недели торчу над связанными списками, и никак не могу понять, как их реализовать=((( Вроде и блок-схемы нарисовал... http://www.cyberforum.ru/cpp-beginners/thread73941.html
C++ Двумерные массивы
1)Количество строк содержащих хот бы один нулевой элемент 2)номер столбца в которой находится самая длинна серия одинаковых элементов Плз напишите понятно просто я только не давно начал самостоятельно изучать с++ если не трудно)
C++ BackDoor для windows
что необходимо знать/уметь чтобы написать BackDoor для windows? ситуация: знаю Си, но не представляю как написать Бэкдор при этом ничего сложного не нужно, вполне достаточно просто считывать инф. с клавы т.е. вопрос: о чем нужно иметь понятие, чтобы въехать в тему и написать бэкдор самому? какие знания потребуются? если будут ответы - желательно в полном объёме названия т.к. они...
C++ вычислить сумму http://www.cyberforum.ru/cpp-beginners/thread73916.html
При некоторых заданных x,N и E определяемых вводом вычислите сумму N слагаемых заданного вида, затем сумму тех слагаемых которые по абсолютной величине больше E.Для второго случая выполните суммирование для двух значений E отличающихся на порядок,и при этом определите кол-во слагаемых, включенных в сумму. Сравните результат с точным значением функции, для которой данная сумму определяет...
C++ Строки(стринг).....удаление слов из текста искал по всему форуму, но подобной ситуации не нашёл( Задача такая: 1)вводится произвольный текст 2)вводится натуральное целое число N 3)выводится текст, заменяя каждое N слово (считая от начала) дефисом, то есть если ввести 3, то в каждой новой строке за место 3 слова должен быть "-" Помогите кто сможет, задача не трудная вроде как и много сил не потребует. Пытался переделать коды типа... подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297

шаблоны в си++ - C++

13.12.2009, 16:50. Просмотров 2743. Ответов 22
Метки (Все метки)

Здравствуйте, я уже сутки пытаюсь переписать стек так, что-бы можно было испольовать все возможные типы данных для элементов стека. Если я верно понял нужно использовать шаблоы, пытался но ничего не вышло.. Если кто знает как ето реализировать буду очень признателен.. Вот
код
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
#include <iostream>
 
using namespace std;
 
struct node
{
    int inf;
    node* next;
};
 
class stack
{
public:
    stack(){head = NULL;}
    ~stack(){}
    void push(int &val)
    {
        node* tmp = new node;
        tmp->inf = val;
        tmp->next = head;
        head = tmp;
    }
    int pop()
    {
        int val = head->inf;
        node* tmp = head;
        head = head->next;
        delete head; 
        return val;
    }
    void clear()
    {
        while (head->next != NULL)    
        {
            node* tmp = head;
            head = head->next;
            delete tmp;
        }
        head = NULL;
    }
    bool empty() {return (head == NULL);}
private:
    node* head;    
};
 
int main()
{
    int val, key;
    stack top;
    
    do
    {
        system("cls");
        cout << "\tStack\t\t\t\tmade by TFTM\n\n";
        cout << "1 - push\n";
        cout << "2 - pop & write\n";
        cout << "3 - exit\n\n";
        cout << "press key: ";
        cin >> key;
        switch (key)
        {
            case 1:
                {
                    cout << "\nenter element: ";
                    cin >> val;
                    top.push(val);
                    break;    
                }
            case 2:
                {
                    if (top.empty()) cout << "stack is empty..";
                    else
                    {
                        cout << "poping:\n";
                        while (!top.empty())
                            cout << top.pop() << endl;
                    }
                    system("pause");
                    break;    
                }
            default:
                {
                    if (key == 3) cout << "exiting succesfully..\n";
                    else cout << "press only 1, 2 or 3\n";
                    system("pause");
            }                
        }
    }
    while (key != 3);
    
    return 0;    
}


Добавлено через 40 минут
На шаблон переделано, осталось как-то реализовать определение типа введенных данных и в зависимости от них кадать в стек элемент того или ониго типа..
mstack.h
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
template <typename T>
struct node
{
    T inf;
    node<T>* next;
};
 
template <typename T>
class mstack
{
private:
    node<T>* head;
public:
    mstack(){head = NULL;}
    ~mstack(){}
    
    void push(T &val)
    {
        node<T>* tmp = new node<T>;
        tmp->inf = val;
        tmp->next = head;
        head = tmp;
    }
    
    void clear()
    {
        while (head->next != NULL)
        {
            node<T>* tmp = head;
            head = head->next;
            delete tmp;
        }
        head = NULL;
    }
    
    bool empty(){return (head == NULL);}
    
    T pop()
    {
        T res = head->inf;
        node<T>* tmp = head;
        head = head->next;
        delete tmp;
        return res;
    }
};

mstack.cpp
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
#include <iostream>
#include "mstack.h"
 
using namespace std;
 
int main()
{
    mstack <int> s;
    int val, key;
    do
    {
        system("cls");
        cout << "\tStack\t\t\t\tmade by TFTM\n\n";
        cout << "1 - push\n";
        cout << "2 - pop & write\n";
        cout << "3 - exit\n\n";
        cout << "press key: ";
        cin >> key;
        switch (key)
        {
            case 1:
                {
                    cout << "\nenter element: ";
                    cin >> val;
                    s.push(val);
                    break;    
                }
            case 2:
                {
                    if (s.empty()) cout << "stack is empty..";
                    else
                    {
                        cout << "poping:\n";
                        while (!s.empty())
                            cout << s.pop() << endl;
                    }
                    system("pause");
                    break;    
                }
            default:
                {
                    if (key == 3) cout << "exiting succesfully..\n";
                    else cout << "press only 1, 2 or 3\n";
                    system("pause");
            }                
        }
    }
    while (key != 3);
    
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru