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

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

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

Реализовать шаблон класса 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++ Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время работы программы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 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
 Аватар для xAtom
910 / 735 / 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
Каратель
Эксперт C++
6543 / 3963 / 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
Каратель
Эксперт C++
6543 / 3963 / 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++

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

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

Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru