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

Перегрузка функции - C++

Восстановить пароль Регистрация
 
Romich41
 Аватар для Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
11.03.2010, 18:07     Перегрузка функции #1
Привет, добрые и умные люди, не могу сдеть прогу....плиз помогите
Согласно заданию нужно реализовать класс абстрактного типа данных
АДТ − стек. Дополнительно перегрузить следующие операции:
«+» − добавить элемент в стек;
«-» − извлечь элемент из стека;
«bool()» − проверка, пустой ли стек
Реализовать эти операции. Выполнить тестирование.
Люди умоляю помогите=(

вот как я понял эти функции, я перезагрузил, но не факт что правильно=(
«+» − добавить элемент в стек;
C++
1
2
3
4
5
int  Stack(int Top, int Element)
{
        if (Top=maxstack) exit(1); //Стек заполнен
        Stack[Top]= Element;//Добавить элемент в стек
        Top++;//Сдвигает указатель на один элемент вверх
«-» − извлечь элемент из стека;
C++
1
2
3
4
5
int Stack(int Top)
{
        if (Top==0) p=1;//Стек пуст
        else p=2;//Стек не пуст
}
«bool()» − проверка, пустой ли стек
C++
1
2
3
4
5
int Stack(int Top)
{
        if (Top==0) exit(1);//Стек пуст
        Top--;//Сдвигаем указатель на один элемент вниз
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2010, 18:07     Перегрузка функции
Посмотрите здесь:

Перегрузка функции C++
Перегрузка функции C++
C++ Перегрузка функции в С++
перегрузка функции C++
Перегрузка операторной функции и функции ! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
11.03.2010, 18:16     Перегрузка функции #2
а где сам класс?
тебе надо описать:
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
class Stack{
private:
      int *data; //будет массив нпример для типа int
      int index, maxsize;
public:
        explicit Stack(int max)
        {
             index=0;
             maxsize=max;
             data = new int[maxsize];
        }
         ~Stack()
         {
              delete [] data;
         }
         int top()
         {
             return data[index];
          }
         void push(int x)
         {
               if (index+1<=maxsize)
               {
                   index++;
                   data[index]=x; 
               }
                else cout << "Stack overflow\n";
         }
         int pop()
         {
              if (index-1>=0)index--;
              else cout<<"Stack underflow\n";
          }
          bool empty()
          {
              return index==0;
          }
};
я не рповерял что получилось, но как то так. а для чего exit(1) если стек полон? это слишком сурово.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.03.2010, 18:53     Перегрузка функции #3
+ - Вроде для бинарных операций: допустим между объектами стеками, не понятна мне мысль задания. Хотя бы так: >> - положить(push) << освободить(pop).
Пример Aye Aye: модифицировать не трудно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Stack{
public:
//...
Stack& operator>> (int&a);
Stack& operator<< (int&a);
};
 
Stack& Stack::operator>>(int&a){
push(a);
return *this;
} 
Stack& Stack::operator<<(int&a){
a = pop();
return *this;
}
Romich41
 Аватар для Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
12.03.2010, 14:36  [ТС]     Перегрузка функции #4
а как мне сделать, что бы по нажатию на клавиши 1 , 2, 3 выполняли\демонстрировались возможность даного класса(добавлени, удаление, проверка)???
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
12.03.2010, 19:44     Перегрузка функции #5
ну можно так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cout  << "1 - menuItem1\n"
            "2 - menuItem2\n"
            "3 - menuItem3\n";
 
int intput=0;
//4 - выход
while (intput!=4)
{
     cin >> input;
     switch(input)
     {
          case 1://действие1
          case 2://действие2
          case 3://действие3
     }
}
хотя я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
      Stack S(100);
      cout << "Stack size = " << S.size() << endl;
      cout << "Is stack empty = " << S.empty() << endl;
      S.push(34);
      cout << "Stack top is " << S.top() << endl;
      cout << "Is stack empty = " << S.empty() << endl;
      S.push(43);
      S.push(3);
      cout << "now stack size = " << S.size() << endl;
      //ну и акие там еще возможности есть.... незнаю даже
      cout << "Stack top is " << S.top() << endl;
      cout << "pop top\n";
      S.pop();
      cout << "Stack top is " << S.top() << endl;
      getch();
      return 0;
}
вроде показывает, что стек работает.
Romich41
 Аватар для Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
13.03.2010, 19:06  [ТС]     Перегрузка функции #6
а getch() задержка экрана?

Добавлено через 23 часа 6 минут
ну вот создалм класс с 3-мя функциями=) а как эти ФУНКЦИИ перегрузить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 22:49     Перегрузка функции
Еще ссылки по теме:

Перегрузка функции C++
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций C++
C++ Дружественные функции. Наследование. Перегрузка функции

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
13.03.2010, 22:49     Перегрузка функции #7
Romich41, перегрузка методов класса - это создание двух или более методов с одинаковым именем, но разной сигнатурой.
Yandex
Объявления
13.03.2010, 22:49     Перегрузка функции
Ответ Создать тему
Опции темы

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