Задание. Для заданной матрицы размером 8 на 8 найти такие k
, что k-я
строка матрицы совпадает с k-м
столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Файл "inc.h
":
#pragma once
#include<iostream>
#include<time.h>
using namespace std;
namespace MatrixX{
class Matrix{
private:
int **matr;
int size;
int number;
bool Flag;
public:
Matrix();
Matrix(int size);
Matrix(Matrix&);
Matrix& operator = (Matrix&);
~Matrix();
void CreateMatr(int size);
void Sum();
int Number();
};
}
Файл "f.cpp
":
#include"inc.h"
MatrixX::Matrix::Matrix() :size(8)
{
cout << "Default constructor: was create!" << endl;
matr = new int*[size];
for (int i = 0; i<size; i++)
matr[i] = new int[size];
}
MatrixX::Matrix::Matrix(int size){
this->size = size;
matr = new int*[size];
for (int i = 0; i < size; i++){
matr[i] = new int[size];
}
}
MatrixX::Matrix::Matrix(Matrix& obj) {
size = obj.size;
matr = new int *[size];
for (int i = 0; i < size; i++) {
matr[i] = new int[size];
for (int j = 0; j < size; j++) {
matr[i][j] = obj.matr[i][j];
}
}
}
MatrixX::Matrix& MatrixX::Matrix::operator=(Matrix& obj) {
if (this == &obj) return *this;
this->size = obj.size;
matr = new int*[size];
for (int i = 0; i < size; ++i)
matr[i] = new int[size];
for (int i = 0; i < size; ++i)
for (int j = 0; j < size; ++j)
matr[i][j] = obj.matr[i][j];
return *this;
}
void MatrixX::Matrix::CreateMatr(int size)
{
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < size; ++j)
{
matr[i][j] = rand() % 100 - 50;
cout << matr[i][j] << '\t';
}
cout << endl;
}
}
int MatrixX::Matrix::Number(){
for (int row = 0; row < size; ++row)
{
Flag = true;
for (int column = 0; column < size; ++column)
if (matr[row][column] != matr[column][row])
{
Flag = false;
break;
}
if (Flag == true) number = row + 1;
}
cout << "Number = "<<number << endl;
return number;
}
void MatrixX::Matrix::Sum(){
int Sum=0;
for (int i = 0; i<size; i++)
{
for (int j = 0; j<size; j++)
{
if (matr[i][j] < 0)
{
for (int g = 0; g < size; g++)
Sum += matr[i][g];
cout << "Sum of elements " << i << " row = " << Sum << endl;
break;
}
}
}
}
MatrixX::Matrix::~Matrix()
{
cout << "Destructor: matr was delete!"<<endl;
for (int i = 0; i<size; i++)
delete[]matr[i];
delete[]matr;
}
Файл "main.cpp
":
#include"inc.h"
int main(){
srand(time(NULL));
int size;
cout << "Enter size matrix = ";
cin >> size;
MatrixX::Matrix matr(size);
matr.CreateMatr(size);
matr.Number();
matr.Sum();
matr.~Matrix();
system("pause");
return 0;
}
Вы зачем-то вызываете деструктор явно
matr.~Matrix();
Потом его вызывает компилятор - при выходе из main()
. Результат - двойное освобождение памяти со всеми вытекающими...
И еще - зачем вот это?
void MatrixX::Matrix::CreateMatr(int size)
Зачем передавать размер, если он уже есть в объекте класса? Неужели вы планируете записывать матрицу не полностью? А если укажете размер больше, чем выделено памяти?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
все нормально считает ответ но я не могу его вернуть из функции только на экран вывожу на предпоследней итерации ответ верный а на последней...
Вот вроде бы нашёл почти реализованый алгоритм на AVL-деревоМне же нужно слепить из этого класс, но узлы у меня через insert добавляются неправильно
В приложени в первом активити идет хттп запрос на серверИспользую Okhttp3 для запроса
Решил попробовать написать программу на Java в связке с БД OracleПрограмма будет делать следующее: