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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
kniazik
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
#1

Составить Алгоритм работы программы (программа есть) - C++

15.06.2011, 12:23. Просмотров 2623. Ответов 8
Метки нет (Все метки)

Есть следующая программа

Реализовать шаблон класса Stack, реализующий стек. Для представления элемента стека использовать шаблон класса Node. Определить функции добавления на вершину стека и чтение с вершины (как шаблонный класс).
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
    Листинг программы
 
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
 
class Exception {
public:
    Exception(char * c="Error!") {
        message=c;
    };
    char *message;
};
class MemoryException : public Exception {
public:
    MemoryException():Exception("Out of memory error!"){};
};
class Downflow : public Exception {
public:
    Downflow():Exception("Stack is empty!"){};
};
 
 
template <class T>
struct Node {               //структура узла
    T data;                 //данные
    Node *l;                //указатель на предыдущий узел
};
template <class T>
class stack
{
public:
    stack() { head=0;}      //конструктор по умолчанию
   ~stack() {};                        // деструктор
 
    Node<T> *push (T inf) { //запихнуть в стек
        Node<T> * newbie = new Node<T>;         //создаем новый узел
        if (!newbie)
        {
            throw MemoryException();
        }
 
        newbie->l=head;                         //указатель узла на предыдущий
        newbie->data=inf;                       //записываем данные
        head=newbie;                            //перемещаем вершину
        return head;
    }
    T pop () {
        if (!head)
        {
            throw Downflow();
        }
 
        Node<T> *tmp=head->l;                   
        T ret=head->data;                       //запоминаем что надо вернуть
        delete head;                            //удаляем старую вершину
        head=tmp;                               //запоминаем новую
        return ret;
    }
    Node<T> *head;                              //вершина стека
};
 
int main()
{
    stack<int> stack;
    while (1)
    {
        cout << endl << "Menu:" << endl << "1. Push" << endl << "2. Pop" << endl << "3. Exit" << endl;
        int key=0;
        cin >> key;
        switch (key)
        {
        case 1:
            cout << "Enter a int number: ";     //ввести число
            int x;
            cin >> x;
            try 
            {
                stack.push(x);                  //в стек
            }
            catch (MemoryException except) 
            {
                cout << except.message;
                return 1;
            }
 
            break;
        case 2:
            try {
                cout << "Popped " << stack.pop() << endl;   //достаем из стека
            }
            catch (Downflow except)
            {
                cout << except.message;
               // return 1;
            }
            break;
        case 3:
            return 0;
        }
    }
}

Нужна помощь в создании алгоритма работы этой программы

Добавлено через 23 часа 52 минуты
НЕУЖЕЛИ НИ КТО НЕ МОЖЕТ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 12:23     Составить Алгоритм работы программы (программа есть)
Посмотрите здесь:
Написать алгоритм работы программы C++
C++ подробный алгоритм работы программы
Объяснить алгоритм работы программы C++
Составить программы работы с файлами C++
тяжёлая программа, поднапрягите мозги:) ( необходимо составить тяжёлый алгоритм ) C++
C++ Программа для работы с БД, работа программы по сети
C++ Простая и интересная задачка по C++: объяснить почему результат работы программы именно такой, какой он есть
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.06.2011, 12:30     Составить Алгоритм работы программы (программа есть) #2
Цитата Сообщение от kniazik Посмотреть сообщение
Нужна помощь в создании алгоритма работы этой программы
какого алгоритма?
блок-схема? псевдокод?
Цитата Сообщение от kniazik Посмотреть сообщение
НЕУЖЕЛИ НИ КТО НЕ МОЖЕТ?
ну так и пишите в алгоритмы, а лучше сразу во фриланс
kniazik
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
15.06.2011, 12:40  [ТС]     Составить Алгоритм работы программы (программа есть) #3
да любого алгоритма работы программы


Например:

1. подключаем библиотеки,
2. Конструктор, деконструктор

и т.д.

В теме алгоритмы - написал, там рекомендовали написать сюда
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.06.2011, 15:26     Составить Алгоритм работы программы (программа есть) #4
Вот тебе простенький стек.
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
template<class  T>
class  xStack  {
   struct  node {  // внутрення структура для организации узлов в списке
    node*   next;
    T           data;
    node(void) : next(NULL) {}
   };
private:
   node*   lst;
public:
    xStack(void) {
    lst   = NULL;
    }
    ~xStack(void) {
             this->clear();
    }
public:
// метод добавляет данные в стек по принципу стека - LIFO(last in, first out) - последним пришёл 
// первым вышел
void  push(T hData) {
    node*  ptr = new node();
    ptr->next   = lst;
    ptr->data  = hData;
    lst = ptr;
}
 
// выталкивает элемент из стека безвозвратно с освобождением динамической памяти
void   pop(void) {
     node*  ptr = lst;
     lst            = lst->next;
     if(ptr) {
            delete ptr;
     ptr = NULL;
     }
}
 
// возвращает  элемент  из верхушки стека
T&  top(void) {
        return  lst->data;
}
    
// функция освобождает память удаляя все элементы из стека
void clear(void) {
   while(lst != NULL) {
             node* ptr = lst;
      lst = lst->next;
     if(ptr) 
           delete ptr;
     ptr = NULL;
   }
   lst = NULL;
}
 
bool empty(void) const {
    return  ! lst;
}
 
// метод возвращает число элементов в стеке
int  get_size(void) const {
         int len = 0;
         for(const node*  ptr = lst; ptr != NULL;  ptr = ptr->next, len++);
     return len;
}
 
// метод для  нахождения элемента  в стеке, если  элемент найдётся то метод вернёт - true
 bool  find(T  hData) const {
       for(const node*  ptr = lst;  ptr != NULL;  ptr = ptr->next) {
    if(! memcmp(&ptr->data, &hData, sizeof(T)))
        return  true;
       }
       return  false;
}
};
 
 
 
 void  main(){
 
xStack<long>  st;   // LIFO
st.push( 100000L );
st.push( 20007L );
st.push( 5000000L );
st.push( 333333L );
st.push( -4000000L );
    
printf("top stack element = %d\n", st.top());
    
st.top() =  7777777L;
 
if(st.find( 5000000L ))
      puts("YES VALUE STACK");
 
while( ! st.empty() ) {
    printf("\t num = %d\n", st.top() );
    st.pop();
}
    
//  st.clear();
}
kniazik
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
15.06.2011, 19:48  [ТС]     Составить Алгоритм работы программы (программа есть) #5
Спасибо, но стек я и сам написать могу, а составить алгоритм работы программы по написанной программе, ни как не получается.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.06.2011, 19:51     Составить Алгоритм работы программы (программа есть) #6
Цитата Сообщение от kniazik Посмотреть сообщение
Спасибо, но стек я и сам написать могу, а составить алгоритм работы программы по написанной программе, ни как не получается.
да ну, как же так? получаеться, что пишите и не знаете что пишите
kniazik
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
15.06.2011, 20:13  [ТС]     Составить Алгоритм работы программы (программа есть) #7
Я просто не знаю как это правильно написать(для сдачи преподавателю). Получилось вот что -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Алгоритм программы по шагам:
1.  Открытие библиотек iostream, fstream, подключение класса пользовательских ошибок myExceptions.cpp.
•   Библиотека iostream – для доступа к функциям ввода-вывода на экран.
•   Библиотека fstream – для доступа к функциям ввода-вывода в файл.
2.  Для стека реализуется шаблон класса Stack:
•   Конструктор без параметров;
•   Конструктор с параметрами;
•   Деструктор;
3.  Описание шаблон класса Node:
•   Создание нового узла;
•   Перевод указателя узла на предыдущий;
•   Сохранение данных; перемещение вершины;
4.   Описание функции main:
•   Ввод данных в стек;
•   Анализ данных в стеке.

Но что то здесь не так
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.06.2011, 20:17     Составить Алгоритм работы программы (программа есть) #8
Цитата Сообщение от kniazik Посмотреть сообщение
Но что то здесь не так
угу, алгоритма сдесь не хватает, то что вы выложили - это описание программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 20:34     Составить Алгоритм работы программы (программа есть)
Еще ссылки по теме:
C++ Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время работы программы?
Программа которая выводит два наибольших числа из десяти введенных. Пожалуйста объясните суть работы программы C++
Составить блок схему для программы упорядочивания чисел в массиве(код программы прилагается) C++
C++ Алгоритм работы цикла FOR ?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kniazik
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
15.06.2011, 20:34  [ТС]     Составить Алгоритм работы программы (программа есть) #9
вот вот - ну помогите же, кто нибудь....
Yandex
Объявления
15.06.2011, 20:34     Составить Алгоритм работы программы (программа есть)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru