powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка операции
8 сообщений из 8, страница 1 из 1
Перегрузка операции
    #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
Перегрузка операции
    #38933845
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sinneНадо перегрузить так, что + добавляет в стек, а * умножает число которое
вводим на число в вершине стека.
Обломись, это бинарные операторы. Как ты себе представляешь синтаксис после перегрузки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перегрузка операции
    #38933898
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sinneНикак не могу понять как перегрузить оператор. Кучу примеров пересмотрел, но все равно не пойму. Надо перегрузить так, что + добавляет в стек, а * умножает число которое вводим на число в вершине стека. Есть такой код, где уже можно занести/вынести числа в стек. Может кто подскажет?
Ох врешь ты барин, ох врешь, ничего ты не пробовал, студиозус. Сейчас попробую решить твою лабу. Да и код у тебя ворованный у девушки. Стыдно!
...
Рейтинг: 0 / 0
Перегрузка операции
    #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
Перегрузка операции
    #38933920
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sinne,

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

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

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

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


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