Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка операции / 8 сообщений из 8, страница 1 из 1
11.04.2015, 14:52
    #38933817
sinne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
Никак не могу понять как перегрузить оператор. Кучу примеров пересмотрел, но все равно не пойму. Надо перегрузить так, что + добавляет в стек, а * умножает число которое вводим на число в вершине стека. Есть такой код, где уже можно занести/вынести числа в стек. Может кто подскажет?
Код: plaintext
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.
    class stack {
private:
    int size;
    int* data;
    size_t ptr;
public:
       stack(int valid_stack_size) {
        this->size = valid_stack_size;
        this->ptr = 0;
        this->data = new int[valid_stack_size];
    }
 
    ~stack() {
        delete[] this->data;
    }
 
    void push(int value) {
        if (this->ptr >= (size_t)this->size)
            throw "stack is full\n";
        this->data[this->ptr++] = value;
    }
 
    int pop() {
        if (this->ptr == 0)
            throw "stack is empty";
        return this->data[--this->ptr];
    }
};
 
int main() {
	int k=0;
    stack* f=new stack(10);
    a:
	cout<<"Enter number\t";
	int n=0;
    cin>>n;
	if (n!=00)
	{f->push(n);
	k++;
	if (k<10)
	goto a;
	else 
	cout<<"stack is full\n";}
	for (int i=0;i<k;i++)
cout<<f->pop()<<"  ";
    return 0;
}
...
Рейтинг: 0 / 0
11.04.2015, 16:30
    #38933845
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
sinneНадо перегрузить так, что + добавляет в стек, а * умножает число которое
вводим на число в вершине стека.
Обломись, это бинарные операторы. Как ты себе представляешь синтаксис после перегрузки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.04.2015, 19:17
    #38933898
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
sinneНикак не могу понять как перегрузить оператор. Кучу примеров пересмотрел, но все равно не пойму. Надо перегрузить так, что + добавляет в стек, а * умножает число которое вводим на число в вершине стека. Есть такой код, где уже можно занести/вынести числа в стек. Может кто подскажет?
Ох врешь ты барин, ох врешь, ничего ты не пробовал, студиозус. Сейчас попробую решить твою лабу. Да и код у тебя ворованный у девушки. Стыдно!
...
Рейтинг: 0 / 0
11.04.2015, 19:54
    #38933917
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
Устраивает?

Код: plaintext
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.
// Student.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <iostream>
#include <conio.h>

using namespace std;

class stack
{

friend stack &operator*=( stack &a_stack, int value );

private:
    int size;
    int* data;
    size_t ptr;
public:
       stack(int valid_stack_size) {
        this->size = valid_stack_size;
        this->ptr = 0;
        this->data = new int[valid_stack_size]();
    }
 
    ~stack() {
        delete[] this->data;
    }
 
    void push(int value) {
        if (this->ptr >= (size_t)this->size)
            throw "stack is full\n";
        this->data[this->ptr++] = value;
    }
 
    int pop() {
        if (this->ptr == 0)
            throw "stack is empty";
        return this->data[--this->ptr];
    }

    size_t getSize() const { return ptr; }

};

stack &operator*=( stack &a_stack, int value )
{
    if (a_stack.ptr == 0)
        throw "stack is empty";
    a_stack.data[a_stack.ptr-1] *= value;
    return a_stack;
}

stack &operator +(stack &a_stack, int a_value)
{
    a_stack.push(a_value);
    return a_stack;
}

int main() {



	int k=0;
    stack* f=new stack(10);

    (*f) = (*f) + 1 + 2;
    (*f) *= 3;

    a:
	cout<<"Enter number\t";
	int n=0;
    cin>>n;
	if (n!=00)
	{f->push(n);
	k++;
	if (k<10)
	goto a;
	else 
	cout<<"stack is full\n";}

	do
    {
        cout << f->pop() << "  ";
    }
    while ( f->getSize() > 0 );

    cout << endl;

    _getch();

    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

sinne,
...
Рейтинг: 0 / 0
11.04.2015, 20:01
    #38933920
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
sinne,

Только я там оператор копирования и конструктор копирования не дописал. Может еще что-то. Так что осторожнее. =)
...
Рейтинг: 0 / 0
11.04.2015, 22:56
    #38933973
sinne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
petrav, ахах, да конечно, но не ворованный, а одолженный и не знаю у девушки или нет)) у меня просто много лаб насобиралось, что знаю, то делаю, что не знаю, приходится вот так делать. но не скажи, пробовать я пробовал, не получалось никак, а возиться долго только с этим время не позволяет и я очень благодарен за любую помощь.
...
Рейтинг: 0 / 0
12.04.2015, 11:36
    #38934079
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
Что это?
Код: plaintext
1.
2.
3.
4.
 stack* f=new stack(10);

    (*f) = (*f) + 1 + 2;
    (*f) *= 3;
...
Рейтинг: 0 / 0
13.04.2015, 09:56
    #38934493
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка операции
mayton,

Операция сложения и умножения. Скобки лишние, но так я привык. Операция копирования некорректная.

Но вроде все работало.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка операции / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]