Форум программистов, компьютерный форум CyberForum.ru

ООП, заполнение 0-ми вместо от 0 до 10, оператор + (перегрузка) не срабатывает - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рандомно вывести строки http://www.cyberforum.ru/cpp-beginners/thread1062707.html
Честно говоря, просто не пойму как можно реализовать программу. Сама задумка. Есть 22 игрока (футболистов): (просто копируем в программу весь состав) 3 - вратаря 8 - защитников 8 - полузащитников 3 - нападающих По позициям рандомно вывести 1 - вратарь
C++ Написать перегруженные функции для вывода на экран суммы элементов одномерного и двумерного массивов Доброе время суток! Прошу помощи в реализации следующей программы... Задача: Заданы элементы массива. Написать перегруженные функции для вывода на экран суммы элементов одномерного и двумерного массивов. знаю как найти сумму двумерного массива, но не знаю как перегрузить обе функции: int mas , sum = 0; for (int i =0; i<n;i++) http://www.cyberforum.ru/cpp-beginners/thread1062704.html
C++ Рунге-Кутта в С++ (ошибки)
Доброй ночи. Решаю ОДУ методом Рунге-Кутта , и такая непонятка выходит, что аналитическое (в excel) и численное (результат проги) расходятся до тех пор, пока аргумент х отрицательный. В чем ошибка - не пойму. #include <stdio.h> #include <conio.h> #include <math.h> #include <locale.h> double f(double x) { return x*exp(2*x+3); }
C++ Реализовать функции сложения, вычитания и умножения матриц
Задание: Разработать программу для работы с двумя матрицами. Реализовать функции сложения, вычитания и умножения матриц. Размерность и элементы матриц задаются случайным образом. Результат выводится на экран. При невозможности выполнения операции выдать сообщение на экран. Квадратную матрицу не предлагать.
C++ Dynamic_cast и static_cast: в чём смысл? http://www.cyberforum.ru/cpp-beginners/thread1062673.html
Здравствуйте! Подскажите пожалуйста... В теории, как я понял, dynamic_cast является лишь приравниванием ссылки на 1 класс(допустим, класс one у нас-родитель, а класс two-наследник класса one), но с той лишь разницей, что выполняется так же и проверка на возможность приравнивания ссылки на класс one ссылке на класс two, и наоборот. Ну, как я смотрел примеры, и, вроде бы всё ничего(на методы,...
C++ Составить схему программы и программу для заполнения таблицы значений функции y = f(x) на отрезке с указанным шагом изменения аргумента помоги, прошу кто может я без понятия заранее спасибо Составить схему программы и программу для заполнения таблицы значений функции y = f(x) на отрезке с указанным шагом изменения аргумента. Значение функции выводить с точностью до тысячных долей. Результат вывести в следующем виде: ! X ! y = f(x) ! подробнее

Показать сообщение отдельно
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
04.01.2014, 03:05     ООП, заполнение 0-ми вместо от 0 до 10, оператор + (перегрузка) не срабатывает
Не правильно работает заполнение матрицы, заполняется только 0-ми.
Не срабатывает оператор +
Помогите разобраться и научиться....

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <locale>
using namespace std;
 
class Matrix
{
protected:
    int m, n; // количество строк и столбцов матрицы
    double** a; // массив элементов матрицы
public:
    // конструкторы
    // конструктор по умолчанию
    Matrix::Matrix()
    {
        n = 0;
        m = 0;
        a = NULL;
    }
    // конструктор с параметрами – выделяет память заданного
    // размера и инициализирует элементы матрицы нулями
    Matrix::Matrix(int m1, int n1)
    {
        n = n1;
        m = m1;
        a = new double*[m];
        for (int i = 0; i < m; i++)
            a[i] = new double[n];
        for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            a[i][j] = 0;
    }
    // конструктор копирования
    Matrix::Matrix(const Matrix& ob)
    {
        n = ob.n;
        m = ob.m;
        if (ob.a == NULL)
        {
            a = NULL;
            return;
        }
        a = new double*[m];
        for (int i = 0; i < m; i++)
            a[i] = new double[n];
        for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            a[i][j] = ob.a[i][j];
    }
    // деструктор
    // деструктор выполняет освобождение памяти,
    // занимаемой двумерным массивом
    Matrix::~Matrix()
    {
        if (a != NULL)
        {
            for (int i = 0; i < m; i++)
                delete[] a[i];
            delete[] a;
        }
    }
    // операция сложения двух матриц (перегрузка)
    Matrix operator+(Matrix&);
    void Create_Matrix(); // функция заполнения матрицы случайными числами
    void Print_Matrix(); // функция распечатки матрицы
};
void Matrix::Create_Matrix() //заполненяем матрицу случайными числами
{
    cout << "Введите кол-во строк: ";
    cin >> m;
    cout << "Введите кол-во столбцов: ";
    cin >> n;
    Matrix temp(m, n);
    for (int i = 1; i < m; i++) //Цикл по строкам
    for (int j = 0; j < n; j++) //по столбцам
        temp.a[i][j] = rand() % 10; //Задаем случайные значения от 0 до 10
}
 
void Matrix::Print_Matrix() //Печатаем матрицу
{
    cout << "_____________________\n";
    Matrix temp(m, n);
    for (int i = 0; i < m; i++) //Цикл по строкам
    {
        for (int j = 0; j < n; j++) //По столбцам
        {
            cout.width(4); //Устанавливаем ширину между выводом текущего значения 
            cout << temp.a[i][j]; //Выводим текущее значение
        }
        cout << "\n"; //Переносим вывод на новую строчку (для красоты)
    }
    cout << "_____________________\n";
}
// операция сложения двух матриц
Matrix Matrix::operator + (Matrix& ob)
{
    if (ob.n == n && ob.m == m)
    {
        Matrix temp(m, n);
        for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            temp.a[i][j] = a[i][j] + ob.a[i][j];
        return temp;
    }
    else
        throw 1;
}
 
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Matrix a, b, c; //Объявляем матрицы a,b,c
    a.Create_Matrix(); //Заполняем случайными числами матрицу a
    cout << "Matrix A: " << endl;
    a.Print_Matrix(); //Печатаем
    b.Create_Matrix(); //Заполняем случайными числами матрицу b
    cout << "Matrix B: " << endl;
    b.Print_Matrix(); //Печатаем
    c = a + b; // Складываем матрицы a и b
    cout << "Matrix A+B: " << endl;
    c.Print_Matrix(); //Печатаем матрицу c
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru