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

Перегрузка friend оператора в матрицах - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ 2 мерный Массив, с указателями http://www.cyberforum.ru/cpp-beginners/thread810432.html
Всем привет, я написал сортировку методом ПОДСЧЁТА для двумерного массива с динамической памятью, и вот что то не работает , посмотрите код, я тут на форуме смотрел тему сортировки массивов, и всё равно для двумерного не получается у мня, спасибо заранее. int count_sort(int **ptrarray,int nrow,int ncol) { srand(time(0)); ptrarray = new int* ; for ( int count = 0; count <...
C++ работа над ошибками.графический редактор в С++ програмку составила. работает вроде правильно. только. выполняется один из пунктов , если выбирать,а как сделать правильно, чтоб после выполнения какого-либо пункта меню, возвращало обратно в начало выполнения программы к основному меню? и при работе с графическим редактором, во время работы программы график с окружностью выводится там же где и меню.как на рисунке. как правильнее оформить,... http://www.cyberforum.ru/cpp-beginners/thread810427.html
C++ Матрица (упорядочить каждую строку по убыванию элементов)
Помогите пожалуйста)) разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=500) и упорядочить каждую строку по убыванию элементов
Кодировка ASII C++
Привет, честной народ! У меня такой вопрос. Дан символьный массив, где храниться шестнадцатеричное число. Как мы все знаем, "принимать участие" могут только цифры от 0 до 9 и кусочек алфавита от A до F. Собственно вопрос: как можно проверить нет ли там лишних символов? Предлагаю свой неправильный вариант, в нем где-то ошибка. char num; int lgh; cin >> num; lgh = strlen(num); for (int i =...
C++ iostream примеры использования http://www.cyberforum.ru/cpp-beginners/thread810412.html
Примеры привести по использованию iostream. Необходимо прочитать из файла имя, фамилию, отчество. В файле данные разделены пробелами. Сохранить имя, фамилию, отчество в переменные. После добавить еще одну запись в таком же формате (Имя Фамилия Отчество, разделенные пробелами). Заранее спасибо :)
C++ Ошибка Extra parameter in call to cos(double) Помогите, пожалуйста!!! Выбивает ошибку "Extra parameter in call to cos(double)" в этом блоке кода: double fun2(double x,double y) { double f; f=cos(y+0,5)+x-0,8; //функция №2 return f; } Не могу никак понять, что за прикол!!! подробнее

Показать сообщение отдельно
cskurt
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 14
18.03.2013, 20:12  [ТС]     Перегрузка friend оператора в матрицах
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
#include <iostream>
#include <time.h>
using namespace std;
class Matrix
{
private:
    int **mass1,mn,mm,i,j;
public:
    friend void operator * (Matrix,Matrix);
    void operator + (Matrix m)
         {
             if (mn==m.mn && mm==m.mm)
             {
                 Matrix c3(mn,mm);
                 for (i=0;i<mn;i++) for (j=0;j<mm;j++) c3.mass1[i][j]=mass1[i][j]+m.mass1[i][j];
                 c3.out();
             }
             else cout << "Ошибка: Размеры матриц не соответствуют правилам" << endl;
         }
    Matrix (const Matrix & m)
    {
        mn=m.mn;mm=m.mm;
        mass1=(int**)malloc(m.mn*sizeof(int*));
        for (i=0;i<m.mn;i++) mass1[i]=(int*)malloc(m.mm*sizeof(int));
        for (i=0;i<m.mn;i++) for (j=0;j<m.mm;j++) mass1[i][j]=m.mass1[i][j];
    }
     Matrix(int n,int m)
    {
        mn=n;mm=m;
        mass1=(int**)malloc(mn*sizeof(int*));
        for (i=0;i<mn;i++) mass1[i]=(int*)malloc(mm*sizeof(int));
    }
      Matrix()
    {
        mn=3;mm=3;
        mass1=(int**)malloc(mn*sizeof(int*));
        for (i=0;i<mn;i++) mass1[i]=(int*)malloc(mm*sizeof(int));
    }
    ~Matrix()
    {
        for (int i=0;i<mn;++i) free(mass1[i]);
        free(mass1);
    }
    void rset()
    {
        for (i=0;i<mn;i++) for (j=0;j<mm;j++) mass1[i][j]=rand()%3;
    }
    void out()
    {
        for (i=0;i<mn;i++) 
        {
            for (j=0;j<mm;j++) cout << mass1[i][j] << " ";
            cout << endl;
        }
    }
};
 void operator * (Matrix m1,Matrix m2)
    {
        if (m1.mm==m2.mn)
        {
        int i,j,k,handle1;
        Matrix c3(m1.mn,m2.mm);
        for (i=0;i<m1.mn;i++) for (j=0;j<m2.mm;j++) 
        {
        handle1=0;
        for (k=0;k<m1.mm;k++) handle1+=m1.mass1[i][k]*m2.mass1[k][j];
        c3.mass1[i][j]=handle1;
        }
        c3.out();
        }
        else cout << "Ошибка: Размеры матриц не соответствуют правилам" << endl;
    }
int main()
{
    srand(time(NULL)); 
    setlocale(LC_ALL,"rus");
    int n=3; //строки
    int m=3; //столбцы
    cout << "Матрица 1:" << endl;
    Matrix c1(n,m);
    c1.rset();
    c1.out();
    cout << "Матрица 2:" << endl;
    Matrix c2;
    c2.rset();
    c2.out();
    cout << "Сложение матриц:" << endl;
    c1+c2;
    cout << "Перемножение матриц:" << endl;
    c1*c2;
    system("pause");
    return 0;
}
реализовал вот так, отладил для разных случаев, вроде теперь всё ок, выкладываю лишь потому, мало ли кому понадобиться как пример, а может кто и ошибки увидит)
 
Текущее время: 12:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru