Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Задание: Составить описание класса для определения квадратных матриц целых чисел. Обеспечить выполнение операций над матрицами: слоение, вычитание, умножение, транспонирование, умножение элементов матриц на скаляр. Предусмотреть вывод отдельных элементов и самих матриц на экран. Помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 15:06 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
У меня есть часть программы с ошибками. Но исправить я не могу((( #include <iostream> #include <cstdlib> #include <ctime> #include <iomanip> class QMatrix { private: int N; int M; double** matrix; public: QMatrix(); // конструктор по умолчанию QMatrix(int n):Matrix(n,n) // конструктор с параметрами QMatrix(const Matrix& ob) // конструктор копии ~QMatrix() // деструктор void Enter() void Show() QMatrix operator + (const Matrix&) QMatrix operator = (const Matrix&) QMatrix operator - (const Matrix& ) QMatrix operator * (const Matrix& ) } QMatrix::QMatrix() // реализация конструктора по умолчанию { N = 0; M = 0; matrix = new double*[N]; for ( int i = 0; i < N; ++i) matrix[i] = new double[M]; } QMatrix:: QMatrix(int n1) // реализация конструктора с параметрами { N = n1; M = n1; 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.0; } QMatrix::QMatrix (const Matrix &ob) // реализация конструктора копии { N = ob.N; M = ob.M; matrix = new double*[N]; for ( int i = 0; i < N; ++i) matrix[i] = new double[M]; for ( int i = 0; i < N; ++i) for ( int j = 0; j < M; ++j) matrix[i][j] = ob.matrix[i][j]; } QMatrix::~QMatrix() // деструктор { for ( int i = 0; i < N; ++i) delete[] matrix[i]; delete[] matrix; } void QMatrix::Enter() // ввод матриц { int i, j; for ( i = 0; i < N; ++i) for ( j = 0; j < M; ++j) matrix[i][j] = 0.01 * (rand() % 1001); } void Matrix::Show() // вывод матрицы { int i, j; for ( i = 0; i < N; ++i) for ( j = 0; j < M; ++j) { if( j % M == 0) std::cout << std::endl; std::cout << std::setw(10) << matrix[i][j]; } std::cout << std::endl; } QMatrix QMatrix :: operator + ( const Matrix& ob) // сумма матриц { QMatrix temp; // реализовано с помощью временного объекта temp.N = this->N; temp.M = this->M; int i, j; temp.matrix = new double*[temp.N]; for ( i = 0; i < temp.N; ++i) temp.matrix[i] = new double[temp.M]; for ( i = 0; i < temp.N; ++i) for ( j = 0; j < temp.M; ++j) temp.matrix[i][j] = this->matrix[i][j] + ob.matrix[i][j]; return temp; } QMatrix QMatrix::operator - (const Matrix& ob) // разность матриц { int i, j; for ( i = 0; i < this->N; ++i) for ( j = 0; j < this->M; ++j) this->matrix[i][j] = this->matrix[i][j] - ob.matrix[i][j]; return *this; } QMatrix QMatrix::operator * (const Matrix& ob) // умножение матриц { QMatrix temp; temp.N = this->N; temp.M = this->M; int i, j, k; temp.matrix = new double*[temp.N]; for ( i = 0; i < temp.N; ++i) temp.matrix[i] = new double[temp.M]; for ( i = 0; i < temp.N; ++i) for ( j = 0; j < temp.M; ++j) { temp.matrix[i][j] = 0; for ( k = 0; k < temp.M; ++k) temp.matrix[i][j] = temp.matrix[i][j] + (this->matrix[i][k] * ob.matrix[k][j]); } return temp; } int main() { srand((unsigned) time(0)); QMatrix m1(3, 3); m1.Enter(); m1.Show(); QMatrix m2(3, 3); m2.Enter(); m2.Show(); QMatrix m3(3,3); m3 = m1 * m2; m3.Show(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 15:24 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDНо исправить я не могу((( Чужие программы совесть править мешает?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 15:33 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
авторУ меня есть часть программы с ошибками. Но исправить я не могу(((Остальные, логично предположить, тоже не смогут - потому что не знают, какие ошибки. Код: plaintext 1. 2. 3. 4. 5. 6. Это лихо. И вообще, кто такие у Вас N и M для [i]квадратной матрицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 15:54 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, что вы))) мне дали программу как ссылку, я пыталась переделать код под свою задачу, но опыта не хватает до конца все понять и переделать. Поэтому обращаюсь к участникам форума((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 15:56 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Abstraction, я понимаю, что эту часть программы надо убрать. А чем-то ее заменять или сразу переходить к 13-ой строчке? Просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. эту часть я брала из книги. И там N и M так же фигурируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:08 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDопыта не хватает до конца все понять и переделать Ну так пойдите и наработайте нужный опыт. Потом вернётесь к этой задаче. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:15 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, если есть возможность, просто помогите((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:19 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
авторэту часть я брала из книги. И там N и M так же фигурируют. Видимо, в книге рассматривался пример произвольной матрицы - у неё может быть разное число строк и столбцов, поэтому нужно две переменных. У квадратной же матрицы размер один - что вдоль, что поперёк. Можете написать комментарии к каждой строке кода - что, по-Вашему, эта строка делает; какой смысл несёт? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:21 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDесли есть возможность, просто помогите((( Помочь с чем? До сих пор Вы не задали ни одного конкретного вопроса. А начитывать Вам заново весь курс программирования - возможности нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:23 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Abstraction, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А те, которые не указала, наверное, задают условия выполнения для квадратной матрицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:31 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я понимаю( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:32 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDА те, которые не указала, наверное, задают условия выполнения для квадратной матрицы.Что такое "условия выполнения"? Нет, к каждой - значит к каждой. Грубо говоря, попробуйте написать такие комментарии, чтобы можно было удалить весь код, а потом по комментариям его снова написать (разумеется, комментарии должны быть на русском, а не на C++). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:41 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Abstraction,ого, с педагогический точки зрения вы просто гений, без шуток! А можно вопросы сначала позадаю? Вы только не ругайтесь, если они будут совсем глупыми(((( Мне надо выкинуть N и M, т.к. это квадратная матрица. Т.е. получается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Пока все так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 17:02 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVD, Не очень понятно, к каким строка какие комментарии относятся. "Конструктор для преобразования к квадратной матрице" - это когда у нас может быть нечто, не являющееся квадратной матрицей, и мы на его основе хотим уметь собирать квадратную матрицу. В задаче такого нет и близко. То, что названо "конструктором по умолчанию" точнее называть "конструктором без параметров". Это, натурально, конструктор, который не принимает параметров. "Конструктор для создания по размеру" - конструктор, который принимает размер и по нему строит матрицу (такого размера). В комментарии хорошо бы оговорить, какую матрицу мы строим - нулевую, единичную, какую-то ещё... "Конструктор копирования", он же "конструктор копии" - конструктор, который принимает единственный аргумент, ссылку на экземпляр класса, и делает на её основе ещё один объект класса, копию "образца". Если название типа - QMatrix, то тип аргумента пишется const QMatrix&. const здесь означает, что мы "обещаем" компилятору, что в процессе копирования не "испортим" переданный образец. Вывод - он и в Африке вывод. Заявлено, что метод Show() выводит матрицу, и он, в нынешней реализации, это делает. А вот Enter() странен. По названию можно было бы подумать, что он заполняет матрицу вводимыми пользователем данными - но нынешняя его реализация присваивает элементам матрицы случайные значения. Лично я бы переименовал метод в Randomize, чтобы адекватнее отразить его сущность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 17:21 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDПока все так? Нет. Во-первых, комментарии не соответствуют коду. Во-вторых, делать ввод и вывод методами самой матрицы - плохой дизайн. Накрайняк можно перегрузить операторы << и >>, но не более того. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 17:22 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Abstraction, простите за комментарии, действительно не соответствуют. Я все равно не понимаю, что оставить, а что выкинуть. Если я оставляю конструктор создания квадратной матрицы по ее размеру, то выкинуть конструктор по умолчанию? Не могу понять, нужен ли конструктор копии( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 17:55 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDЯ все равно не понимаю, что оставить, а что выкинуть. Если я оставляю конструктор создания квадратной матрицы по ее размеру, то выкинуть конструктор по умолчанию? Не могу понять, нужен ли конструктор копии( Ответы на эти вопросы определяются тем, как данный класс будет использоваться. Без использования можно выкинуть вообще всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 18:15 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ну смотрите, если забыть про все ошибки в программе и посмотреть только на структуру, то в дальнейшим автором используется конструктор копии при сложении, вычитании и умножении матриц. Значит это мы оставляем. Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 18:24 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDв дальнейшим автором используется конструктор копии при сложении, вычитании и умножении матриц В упор не вижу чтобы он там использовался. Ткните пальцем в строчку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 18:40 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Первая строчка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 18:45 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDПервая строчка В ней нет вызова copy-конструктора, это простое объявление функции, получающей константный объект по ссылке. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 19:20 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ну направте меня, пожалуйста, в нужное русло. Я мучаюсь с этой задачей большое кол-во времени, а у меня еще их 6, сдать надо в понедельник. Я просто в отчаяние(((( Понимаю, что трудно Вам мне это все объяснять, так как я полный дилетант. Для меня ваши предложения некоторые просто как на китайском, потому что я не программист, а физик. И мне очень сложно дается логика программ. Приблизительно понимаю, что не правильно, но заменить не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 20:50 |
|
||
|
Реализация класса для работы с матрицами целых чисел
|
|||
|---|---|---|---|
|
#18+
OksanaVDЯ мучаюсь с этой задачей большое кол-во времени, а у меня еще их 6, сдать надо в понедельник. Я просто в отчаяние(((( Не надо отчаиваться, в этой жизни есть более неприятные вещи чем академический отпуск. Который я Вам рекомендую взять, чтобы заново пройти материал первых курсов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 20:55 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=87&tid=2020598]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
93ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 205ms |

| 0 / 0 |
