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

Сделать класс двухмерного динамического массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает но компилируется http://www.cyberforum.ru/cpp-beginners/thread290727.html
Прога на Борланде фор ДОС. Компилируется, трассировка проходит удачно, но призапуске вылитает. Подскажите чьо. На ненужности не обращайте внимания. Хотяя. Я понятия не имею как корректно...
C++ Количество елементов массива Вчера тоже встретился с этой проблемой, но подумал что и так много у вас на форуме спрашиваю, так что не спросил... НО сегодня опять та же проблема. Вот код: ... ... int n; ifs >> n; int m;... http://www.cyberforum.ru/cpp-beginners/thread290723.html
Вывести struct через fprint C++
Работает всё кроме функции Show_Rezult. т.к. у меня неразбериха с fprint...подсобите если нетрудно пожалуйста... #include <iostream> #include <stdio.h> #include <iomanip> using namespace...
C++ Определить частоту появления в тексте каждого слова
#include <conio.h> #include <stdio.h> #include <ctype.h> #include <string.h> main() { char tekst; char buf; char buf2;
C++ Римские числа http://www.cyberforum.ru/cpp-beginners/thread290695.html
Нужна программа, проверающая на правильность введенное римское число В римских числах не силен. Гуглил, толком понял лишь что: допустимы лишь символы I V X L C D M повторение любого символа...
C++ map/set iterator not dereferencable map<string,int> optimized(map<string,int>&dict){ map<string,int>::iterator i=dict.begin(); map<string,int>::iterator j=dict.begin(); while(i!=dict.end()){ for(j;j!=dict.end();j++){... подробнее

Показать сообщение отдельно
Kira-sempai
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 6
08.05.2011, 03:14  [ТС]
вот, скорее всего, в этом то и проблема, что что-то не то. Я точно не знаю, как сказать возвращать поделенную матрицу. Так что написал это скорее наобум и компилятор проглотил. Сейчас вот ковыряюсь, пытаюсь придумать, чем это заменить.

Добавлено через 5 часов 3 минуты
еще немного поковырялся (смотрит на часы - 3 часа ночи....). Получил следующий код. Вроде работает, но не делит((
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
125
126
127
128
129
130
131
132
// Kontrolnaja.cpp: определяет точку входа для консольного приложения.
//
 
#include "StdAfx.h"
#include <stdio.h>
#include <assert.h>
#include <iostream>
 
using namespace std;
 
class matrix
{
public:
      matrix(int d1 = 10, int d2 = 10);
     ~matrix();
      int ub1() const{return(s1-1);}
      int ub2() const{return(s2-1);}; 
      int & element(int i, int j);
        
      int getNum() const;
 
      matrix operator/ (const matrix &);
      matrix & operator= (const matrix &);
      matrix & operator/= (const matrix &);
 
private:
    int s1,s2;
    int** p;
    int num;
 
 
};
 
int matrix::getNum() const
{
    return num;
}
 
matrix matrix::operator/ (const matrix & rhs)
{
    int e;
    for (int i = 0; i < s1; ++i)
        for (int j = 0; j < s2; ++j)
        {
            e = p[i][j]; 
            e /= rhs.getNum();
            p[i][j] = e;
        }
    
    return matrix(); //чего же нада возвращать-то чтобы вернулась поделеная матрица?
}    
 
 
 
 
matrix & matrix::operator=(const matrix & rhs)
{
    if (this == &rhs)
        return *this;
 
    assert (s1 == rhs.s1 && s2 == rhs.s2);
    for (int i = 0; i < s1; ++i)
        for (int j = 0; j < s2; ++j)
            p[i][j] = rhs.p[i][j];
 
}
 
matrix & matrix::operator/=(const matrix & rhs)
{
    
 
    for (int i = 0; i < s1; ++i)
        for (int j = 0; j < s2; ++j)
            p[i][j] = p[i][j]/rhs.getNum();
    
    return *this; //аналогично предыдущему вопросу...
 
}
 
matrix::matrix(int d1, int d2): s1(d1), s2(d2) //конструктор - без понятия как это работает
 
{
 
assert(d1 > 0 && d2 > 0);
 
p = new int*[s1];
 
assert(p!=0);
 
 
for ( int i = 0; i < s1; ++i)
{
  p[i] = new int[s2];
 
  assert(p[i] != 0);
 
}   
 
}
 
matrix::~matrix() //деструктор - вроде удаляет
 
{
for ( int i = 0; i < s1; ++i)
  delete p[i];
delete []p;
}
 
int & matrix::element(int i,int j) //типа обращение к элементу.. может можно как-нить по-проще обратиться к нему?
{
    assert(i>=0 && i <= ub1() && j >= 0 && j <= ub2());
    return p[i][j];
}
 
void main()
{
    int c = 6;
    int r = 5;
    matrix m(r,c);
    matrix n(r,c);
    int sd;
    for (int i = 0; i < r; ++i)
        for (int j = 0; j < c; ++j)
            m.element(i,j) = i + j;
 
    n = m;
//  n = m/2; //если раскоментить - вааще жопа
    cout << "m[3,3] = " << m.element(3,3) << "\n";
    m/=2; //это прокатывает, но результат деления почему-то ноль
    cout << "m[3,3] / 2 = " << m.element(3,3) << "\n";
    cin >> sd;
}
как его заставить работать? или можно сделать это безобразие проще и по-другому?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru