Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
#1

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

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

Привет, добрые и умные люди, не могу сдеть прогу....плиз помогите
Согласно заданию нужно реализовать класс абстрактного типа данных
АДТ − стек. Дополнительно перегрузить следующие операции:
«+» − добавить элемент в стек;
«-» − извлечь элемент из стека;
«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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2010, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка функции (C++):

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

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

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

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

Перегрузка функции - C++
Добрый день. Не могу решить до конца задачу. Суть в том что бы передать значения в функцию, сделать с ними что то и вернуть значение....

перегрузка функции << и >> - C++
//include &lt;stdio.h&gt; //include &lt;iostream.h&gt; //include &lt;fstream.h&gt; //include &lt;string.h&gt; char group= “\0”; char otchet= “Print.txt”;...

6
Aye Aye
368 / 282 / 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) если стек полон? это слишком сурово.
1
Genius Ignat
1237 / 775 / 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;
}
1
Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
12.03.2010, 14:36  [ТС] #4
а как мне сделать, что бы по нажатию на клавиши 1 , 2, 3 выполняли\демонстрировались возможность даного класса(добавлени, удаление, проверка)???
1
Aye Aye
368 / 282 / 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;
}
вроде показывает, что стек работает.
1
Romich41
15 / 15 / 1
Регистрация: 01.11.2009
Сообщений: 188
13.03.2010, 19:06  [ТС] #6
а getch() задержка экрана?

Добавлено через 23 часа 6 минут
ну вот создалм класс с 3-мя функциями=) а как эти ФУНКЦИИ перегрузить?
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.03.2010, 22:49 #7
Romich41, перегрузка методов класса - это создание двух или более методов с одинаковым именем, но разной сигнатурой.
0
13.03.2010, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 22:49
Привет! Вот еще темы с ответами:

перегрузка функции - C++
Функція func повертає позицію першого входження шуканого числа чи символу.ПОДСКАЖИТЕ КАК ЗАМУТИТЬ

Перегрузка функции - C++
Доброго времени суток! Дана задача: Написать функции для поиска минимального и максимального элементов, расположенных выше побочной...

Перегрузка функции - C++
Доброго времени суток Допустим, есть перегруженная функция void func(long f, long g, int q){cout&lt;&lt;&quot;1&quot;;} void func(long f, int g,...

Перегрузка функции С++ - C++
Создайте перегруженную функцию decr(), которая от аргумента вычитает 1, где аргументы целый (int), вещественный (double) тип, символьный...


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

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

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