Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция нахождения факториала https://www.cyberforum.ru/ cpp-beginners/ thread1997625.html
Кто может исправить ошибки? голова уже вообще не работает #include <iostream> using namespace std; int factorial (int n) { int n; int x=1; cout<<"Введите целое число от 1 до 12"<<endl;
Найти коэффициенты k и b прямой y=kx+b C++
Дано множество точек на плоскости. Найти коэффициенты k и b прямой y=kx+b, на которой лежит наибольшее число точек. Я не знаю как это решить(
C++ Найти сумму четных элементов массива целых чисел В чём ошибка? //Найти сумму четных элементов массива целых чисел. #include "stdafx.h" #include <iostream> using namespace std; void Entermassiv(int *mas, int n, int sum) { https://www.cyberforum.ru/ cpp-beginners/ thread1997592.html C++ Ошибки C2280, E1776 при передаче экземпляра ostream в функцию Ошибки C2280, E1776. Учу С++ по книге Страуструпа и при работе с файлами появилась такая проблема. Как решить? //Source.cpp #include <iostream> #include <fstream> #include <vector> #include "Point.h" #include <Windows.h> using namespace std; https://www.cyberforum.ru/ cpp-beginners/ thread1997582.html
C++ Двумерная матрица и выражения . Не могу разобраться
Всем доброго времени суток,не могу разобраться с задачей. Особую сложность вызывает написание выражений , в частности модуль . Уж шибко сложно это для меня . Буду признателен каждому , кто хоть немного расскажет что к чему, либо покажет код.
C++ Определить общее количество чисел и отдельно количество одно-, двух- и трехзначных https://www.cyberforum.ru/ cpp-beginners/ thread1997547.html
Fixer_84, В файле записана последовательность одно-, двух- и трехзначных целых чисел (количество чисел может быть любым). Определить общее количество чисел и отдельно количество одно-, двух- и трехзначных чисел (функцией оформить определение количества разрядов числа). Результаты работы программы вывести в файл.
C++ Рекурсивный "распил" отрезка Задание ниже. Нужно написать чистой рекурсией. Проблема заключается в следующем: я перебирала каждую комбинацию точек распила и находила ту, при которой цена распила наименьшая. Препод дал по рукам и сказал, что перебор такой не нужен и я должна решать иначе. Прошу подсказать, если есть у кого идеи. Дан отрезок (палка) , который нужно распилить в помеченных местах L1, L2, ..., Lk. Числа N, Li... https://www.cyberforum.ru/ cpp-beginners/ thread1997512.html Исправить ошибку "/usr/bin/ld: cannot find -lrtdk" C++
Доброго времени суток! при выполнении вот этой задачи 3. В рабочем каталоге необходимо создать файл lab11.c содержащий код программы запуска простой задачи в режиме реального времени. Пример кода: #include <stdio.h> #include <signal.h> #include <unistd.h>
C++ Вектора, заполнение двумерного массива https://www.cyberforum.ru/ cpp-beginners/ thread1997509.html
Здравствуйте дамы и господа. Вопрос конечно простой, но в тупик меня поставил и не могу понять как быть в данной ситуации. Но все по порядку. У меня есть класс, клетки myCell. class myCell // класс являющийся ячейкой { public: int MyX; // начало отрисовки. координаты по X int MyY; // начало...
C++ Класс паспорт и его наследование Помогите пожалуйста с таким заданием: Задание 1. Создайте класс «Паспорт». - Данные класса - серия, номер паспорта, когда и кем выдан. Создать конструктор произвольных паспортных данных, конструктор по умолчанию и копирования. Определите методы для вывода данных паспорта как всех вместе так и по частям. Задание 2. Создайте производный класс «Паспортный стол», в котором свяжите паспортные... https://www.cyberforum.ru/ cpp-beginners/ thread1997504.html
Как подсчитывается количество строк и столбцов, все элементы которых оказались равны 0 C++
Как подсчитывается количество строк и столбцов, все элементы которых оказались равны 0
C++ Как проверить есть ли в матрице элементы совпадающие с каким-либо элементом вектора https://www.cyberforum.ru/ cpp-beginners/ thread1997497.html
Как проверить есть ли в матрице элементы совпадающие с каким-либо элементом вектора
0 / 0 / 1
Регистрация: 05.09.2016
Сообщений: 55
0

Перегрузка операций += и -= - C++ - Ответ 10513330

05.06.2017, 15:03. Показов 1236. Ответов 8
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните, пожалуйста, как правильно выполнить перегрузку операций += и -=? При такой реализации программа вылетает после ввода b.
bottle.h
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
#ifndef BOTTLE_H_
#define BOTTLE_H_
#include <iostream>
class Port {
private:
    char * brand;
    char style[20];     // tawny, ruby, vintage
    int bottles;
public:
    Port(const char * br = "NONE", const char * st = "NONE", int b = 0);
    Port(const Port & p);
    virtual ~Port() {   delete [] brand;    }
    Port & operator=(const Port & p);
    Port & operator+(int b);    // add b to bottles
    Port & operator-=(int b);   // del b from bottles, if it's possible
    int BottleCount() { return bottles; }
    virtual void Show() const;
    friend std::ostream & operator<<(std::ostream & os, const Port & p);
};
class VintagePort : public Port {
private:
    char * nickname;    //"The Noble" or "Old Velvet"
    int year;           
public:
    VintagePort();
    VintagePort(const char * br, int b, const char * nn, int y);
    VintagePort(const VintagePort & vp);
    ~VintagePort() {    delete [] nickname; }
    VintagePort & operator=(const VintagePort & vp);
    void Show() const;
    friend std::ostream & operator<<(std::ostream & os, const VintagePort & vp);
};
#endif
bottle.cpp
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
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
99
100
101
102
103
104
105
106
#include <iostream>
#include "bottle.h"
 
////////////////////////////////    Port        //////////////////////////
 
Port::Port(const char *br, const char *st, int b)
{
    brand = new char[std::strlen(br) + 1];
    std::strcpy(brand, br);
    std::strncpy(style, st, std::strlen(st) + 1);
    style[std::strlen(st) + 1] = '\0';
    bottles = b;
}
 
Port::Port(const Port &p)
{
    brand = new char[std::strlen(p.brand) + 1];
    std::strcpy(brand, p.brand);
    std::strncpy(style, p.style, std::strlen(p.style) + 1);
    style[std::strlen(p.style) + 1] = '\0';
    bottles = p.bottles;
}
 
Port & Port::operator =(const Port &p)
{
    if(this == &p)
        return *this;
    delete [] brand;
    brand = new char[std::strlen(p.brand) + 1];
    std::strcpy(brand, p.brand);
    std::strncpy(style, p.style, std::strlen(p.style) + 1);
    style[std::strlen(p.style) + 1] = '\0';
    bottles = p.bottles;
    return * this;
}
 
Port & Port::operator+=(int b)
{
    bottles += b;
    return *this;
}
 
Port & Port::operator -=(int b)
{
    if (b > BottleCount())
        std::cout << "Count of botteles on storage less than you want to take. The try is not successful.\n";
    else
        bottles -= b;
    return * this;
}
 
void Port::Show() const
{   std::cout << "Brand: " << brand << "\nKind: " << style << "\nBotteles: " << bottles << std::endl;   }
 
std::ostream & operator<<(std::ostream & os, const Port & p)
{   
    os << p.brand << ", " << p.style << ", " << p.bottles;
    return os;
}
 
////////////////////////////////    VintagePort     //////////////////////////
 
VintagePort::VintagePort() : Port()
{
    nickname = new char[1];
    nickname[0] = '\0';
    year = 0;
}
 
VintagePort::VintagePort(const char *br, int b, const char *nn, int y) : Port(br, "Vintage", b)
{
    nickname = new char[std::strlen(nn) + 1];
    std::strcpy(nickname, nn);
    year = y;
}
 
VintagePort::VintagePort(const VintagePort &vp) : Port(vp)
{
    nickname = new char[std::strlen(vp.nickname) + 1];
    std::strcpy(nickname, vp.nickname);
    year = vp.year;
}
 
VintagePort & VintagePort::operator =(const VintagePort &vp)
{
    if (this == &vp)
        return *this;
    delete [] nickname;
    nickname = new char[std::strlen(vp.nickname) + 1];
    std::strcpy(nickname, vp.nickname);
    year = vp.year;
    return *this;
}
 
void VintagePort::Show() const
{
    Port::Show();
    std::cout << "NickName: " << nickname << "\nYear: " << year << std::endl;
}
 
std::ostream & operator <<(std::ostream & os, const VintagePort & vp)
{
    os << (const Port &) vp;
    os << ", " << vp.nickname << ", " << vp.year << std::endl;
    return os;
}
useBottle.cpp
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
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
#include <iostream>
#include "bottle.h"
 
using namespace std;
 
char * setNickName(int tnn);
char * setStyle(int s);
 
int main()
{
    int numVine;
    cout << "Enter count of brands: ";
    cin >> numVine;
    Port ** p_vines = new Port*[numVine];   
    char tempBrand[20];
    int tempStyle;                              // 1 - VintagePort, 2 - Tawny, 3 - Ruby
    int tempBottles;
    int tempNickName;                       // 1 - The Noble, 2 - Old Velvet
    int tempYear;
 
    for (int i = 0; i < numVine; i++)
    {
        cout << "\nEnter Brand " << i + 1 << ": ";
        cin >> tempBrand;
        cout << "Set style of bottles: 1 - VintagePort, 2 - Tawny, 3 - Ruby: ";
        cin >> tempStyle;
        cout << "Enter count of botteles: ";
        while (cin >> tempBottles && tempBottles < 0)
            cout << "Count of bottles must be positive. Enter count of botteles AGAIN: ";
        if (tempStyle == 1)
        {
            cout << "Enter 1 for nickName "The Noble" and 2 for nickName "Old Velvet": ";
            cin >> tempNickName;
            cout << "Enter year: ";
            while (cin >> tempYear && ( tempYear < 1000 || tempYear > 2017))
                cout << "Enter year: ";
            p_vines[i] = new VintagePort(tempBrand, tempBottles, setNickName(tempNickName), tempYear);
        }
        else
        {
            p_vines[i] = new Port(tempBrand, setStyle(tempStyle), tempBottles);
        }
    }
 
    cout << endl;
 
    for (int i = 0; i < numVine; i++)
    {
        p_vines[i] ->Show();
        cout << endl;
    }
 
    int b;
    cout << "Enter count of bottles you want to take: ";
    cin >> b;
    for (int i = 0; i < numVine; i++)
        p_vines[i] = p_vines[i] + b;
 
    for (int i = 0; i < numVine; i++)
        delete p_vines[i];
 
    return 0;
}
 
char * setStyle(int s)
{
    if (s == 1)         return "VintagePort";
    else if (s == 2)    return "Tawny";
    else if (s == 3)    return "Ruby";
    else                return "none";
}
 
char * setNickName(int tnn)
{
    if (tnn == 1)       return "The Noble";
    else if (tnn == 2)  return "Old Velvet";
    else                return "none";
}


Вернуться к обсуждению:
Перегрузка операций += и -= C++
0
Лучшие ответы (1)
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2017, 15:03
Готовые ответы и решения:

Перегрузка операций
Уважаемые программисты! Помогите новичку! Мне нужно написать программу, в которой реализуется...

Перегрузка операций
Добрый день! Задание простенькое но не могу решить так как не получается перегрузка операций....

Перегрузка операций
Здравствуйте, помогите с лабораторной. Я правильно сделал и как менять названия у перегрузки...

Перегрузка операций
#include &lt;iostream&gt; using namespace std; class chislo { public: chislo(); chislo(int...

8
05.06.2017, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 15:03
Помогаю со студенческими работами здесь

Перегрузка операций
Задание у меня перегрузить операции: + добавить элемент в множество; * пересечение множеств;...

Перегрузка операций
Начал изучать перегрузку операций, и чего-то вроде не понял или что... Вообщем не могу понять чего...

Перегрузка операций
Здравствуйте. Объясните механизма операции инкремента. Как работают эти строки: Counter(int c) :...

Перегрузка операций '<<' и '>>'
Добрый вечер всем:) У меня вот такое задание: Создайте класс, реализующий однонаправленную...

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