16 / 16 / 1
Регистрация: 01.11.2009
Сообщений: 188
1

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

11.03.2010, 18:07. Показов 1775. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, добрые и умные люди, не могу сдеть прогу....плиз помогите
Согласно заданию нужно реализовать класс абстрактного типа данных
АДТ − стек. Дополнительно перегрузить следующие операции:
«+» − добавить элемент в стек;
«-» − извлечь элемент из стека;
«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--;//Сдвигаем указатель на один элемент вниз
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2010, 18:07
Ответы с готовыми решениями:

Перегрузка в виде метода VS Перегрузка в виде функции друг
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде...

Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций
Добрый день. Дана лабораторная работа, (см. ниже 2 скриншота) по заданию нужно вычислить функции с...

Дружественные функции. Наследование. Перегрузка функции
Здравствуйте, у меня проблема Не знаю куда Вставить имеющийся код(В какую строчку или строчки...

Перегрузка операторной функции и функции !
3.16Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных...

6
373 / 287 / 97
Регистрация: 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) если стек полон? это слишком сурово.
1
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
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;
}
1
16 / 16 / 1
Регистрация: 01.11.2009
Сообщений: 188
12.03.2010, 14:36  [ТС] 4
а как мне сделать, что бы по нажатию на клавиши 1 , 2, 3 выполняли\демонстрировались возможность даного класса(добавлени, удаление, проверка)???
1
373 / 287 / 97
Регистрация: 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;
}
вроде показывает, что стек работает.
1
16 / 16 / 1
Регистрация: 01.11.2009
Сообщений: 188
13.03.2010, 19:06  [ТС] 6
а getch() задержка экрана?

Добавлено через 23 часа 6 минут
ну вот создалм класс с 3-мя функциями=) а как эти ФУНКЦИИ перегрузить?
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.03.2010, 22:49 7
Romich41, перегрузка методов класса - это создание двух или более методов с одинаковым именем, но разной сигнатурой.
0
13.03.2010, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2010, 22:49
Помогаю со студенческими работами здесь

Перегрузка функции
Доброго времени суток! Дана задача: Написать функции для поиска минимального и максимального...

Перегрузка функции в С++
1. Определить функцию Search(), которая позволяет найти самое длинное слово в предложении....

Перегрузка функции
Создайте функцию max(), которая возвращает наибольший из трёх численных аргументов, используемых...

Перегрузка функции
Подскажите пожалуйста, почему не получается перегрузить функцию(например вместо int поставить...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru