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

Наследование, нахождения произведения и сложения матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ После каждого четного элемента массива вставить 2 элемента с тем же значением, полученный массив отсортировать http://www.cyberforum.ru/cpp-beginners/thread909369.html
после каждого четного элемента массива вставить 2 элемента с тем же значением.полученный масив отсортировать.очень хотелось бы с комментариями. пример вывода на экран исх массив 1 2 0 12 14 четные элементы 2 12 14 полученный отсортированный массив 14 14 14 12 12 12 2 2 2 1 0 вот этот код нужно исправить.в нем ошибка(...
C++ Описать класс «вектор». Перегрузить операции * (скалярное произведение, умножение на скаляр) Помогите пожалуйста описать класс «вектор». Перегрузить операции * (скалярное произведение, умножение на скаляр), =. Протестировать работоспособность каждого метода вашего класса. а то экз завтра а я не успела сделать её. http://www.cyberforum.ru/cpp-beginners/thread909368.html
Не могу понять, что за ошибка (В матрице поменять местами столбцы, чтобы минимальные элементы образовывали возрастающую последовательность) C++
Суть задачи состроит в том, дана матрица размера n на m. задается двумерный массив(рандомно). нужно поменять местами столбцы что бы минимальные элементы образовывали возрастающую последовательность. #include "stdafx.h" #include <stdio.h> #include <iostream> #include <time.h> #define x 100 #define y 100 using namespace std; void gen (int str, int slb, int a, int b, int mass);
C++ Как переделать код?. Нужно сделать через функции пользователя
#include <string.h> #include <iostream> #include <algorithm> using namespace std; int main() { char *st=new char;
C++ Отсортировать массив по возрастанию http://www.cyberforum.ru/cpp-beginners/thread909350.html
подскажите пожалуйста #include <iostream> #include <iomanip> #include <ctime> using namespace std; void main() { setlocale(LC_CTYPE, "Russian"); int *a,*b,*c,i,j,k,t,trunk,flag,flag1,N,M; cout<<"Введите размер массива А :";
C++ нужен ли while в рекурсии? Сказали переделать код, нужно что то сделать с while. Что не так объясните) #include <stdio.h> #include <conio.h> #include <locale.h> #include <math.h> double sum(int n, int x, int e) { double y = (2*n-1)*pow((double)x,2*n+1)/(2*n*(2*n+1)); подробнее

Показать сообщение отдельно
Гром
 Аватар для Гром
199 / 118 / 10
Регистрация: 20.03.2009
Сообщений: 1,075
Записей в блоге: 15
24.06.2013, 05:52     Наследование, нахождения произведения и сложения матриц
Нужно вызывать srand всего один раз за время работы программы, где-нибудь в начале функции main.

P.S.
1. Деструктор должен освобождать выделенную память:
C++
1
2
3
4
5
6
Matrix::~Matrix()
{
for (int i = 0; i < size; ++i)
 delete[] array[i];
delete[] array;
}
2. Функция подсчета определителя должна, во-первых, называть det или get_det (вовсе не set_det); во-вторых, должна возвращать целое значение (как произведение и разность целых; это же касается и всех внутренних переменных этой функции); в-третьих, вообще его возвращать - через return det; в-четвертых, насколько я понял, у вас он считается как сумма произведений элементов на линиях, параллельных главной диагонали минус то же для побочной - это на самом деле верно только для матриц 2*2 и 3*3, в более общем случае определитель (т.е. минор n-го порядка) - это линейная комбинация миноров n-1 порядка (т.е. определителей матриц размером на 1 меньше) и далее рекурсивно. Обычно он раскладывается по первой строке или столбцу, если только нет более удобного варианта (строки или столбца с большим количеством нулей).

3. Матрица вообще не должна знать, что вы там с ней делали - вместо двух функций типа showMatrix (одна из которых с параметром вообще никак не относящемся к матрице) вам нужна одна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Matrix::show_Matrix()
{
    for(int j=0; j<size; j++)
    {
        for(int i=0; i<size; i++)
        cout<<setw(7)<<array[i][j];
    cout<<endl;
    }            
}
 
int main()
{
//...
Matrix C = A + B;   //по-хорошему тут бы перегрузить operator+, но можно и как ниже:
//Matrix C = A;
//C.add(B);
std::cout << "Сумма матриц A и B" << std::endl;
C.show_Matrix();
}
4. В названиях функций не обязательно везде писать слово Matrix. Вызовы функций типа show, get_size или size, get_element, set_element и т.п. гораздо короче и не менее понятны.

5. Функции, которые не изменяют значения переменных настоятельно рекомендуется помечать как const:
C++
1
2
3
4
5
6
7
class Matrix
{
public:
//...
int get_size() const { return size; }
//...
};
И еще довольно много замечаний по вашему коду, но для начала хотя бы это.
 
Текущее время: 01:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru