A
aaaaaa
Дана квадратная матрица А порядка n. Получить вектор А(T)b;
Элементы вектора b вычисляются по формуле: b(i)=1(i^2+2), при i-четное, b(i)=1/i , при i-нечетное.
Определить функции транспонирования квадратной матрицы и умножения квадратной матрицы на вектор.
Разместить определение данных в заголовочном файле, а определения функций и главную функцию программы в двух отдельных файлах.
Программа крашится после транспонирования, Помогите найти в ошибку, пожалуйста,и , лучше, с обьяснениями. Заранее спасибо
main.cpp:
functions.h:
functions.cpp:
Элементы вектора b вычисляются по формуле: b(i)=1(i^2+2), при i-четное, b(i)=1/i , при i-нечетное.
Определить функции транспонирования квадратной матрицы и умножения квадратной матрицы на вектор.
Разместить определение данных в заголовочном файле, а определения функций и главную функцию программы в двух отдельных файлах.
Программа крашится после транспонирования, Помогите найти в ошибку, пожалуйста,и , лучше, с обьяснениями. Заранее спасибо
main.cpp:
C++:
#include <iostream>
#include <conio.h>
#include <string.h>
#include "functions.h"
using namespace std;
int main()
{
int n;
cout << " Enter n:";
cin >> n;
int** mtrx = newmatrix(n);
for(int i = 0; i < n; ++i)
{
for (int j=0; j<n; j++)
{
mtrx[i][j] = j;
}
}
for(int i = 0; i < n; ++i)
{
for (int j=0; j<n; j++)
{
printf ("%3i",mtrx[i][j]);
}
cout << endl;
}
cout << endl;
int** tmtrx = Transposition(mtrx, n);
for(int i = 0; i < n; ++i)
{
for (int j=0; j<n; j++)
{
printf ("%3i",tmtrx[i][j]);
}
cout << endl;
}
int** vec=newvector(n);
Fillvec(vec, n);
int **res=newvector(n);
Calculations (tmtrx, vec, res,n);
for (int i=0; i<n; i++)
{
cout << res[i];
}
cleanmem(mtrx, n);
cleanmem(tmtrx, n);
cleanmem(vec, n);
return 0;
}
functions.h:
C++:
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int** newmatrix(const int n);
int** Transposition(int** matrix,const int n);
void cleanmem(int** array, const int n);
int** newvector(const int n);
void Fillvec(int** vector,const int n);
void Calculations (int** transmax, int** vector, int** results, const int n);
#endif // FUNCTIONS_H_INCLUDED
functions.cpp:
C++:
#include <iostream>
#include <conio.h>
#include "functions.h"
using namespace std;
int** newmatrix(const int n)
{
int** array = new int*[n];
for(int i = 0; i < n; ++i)
{
array[i] = new int[n];
}
return array;
}
//-------------------------------
int** newvector(const int n)
{
int** vector=new int*[n];
return vector;
}
void Fillvec(int** vector,const int n)
{
for (int i=0; i<n; i++)
{
if (i%2==0)
{
*vector[i]=(1/i);
}
else
{
*vector[i]=(1/(i*i+2));
}
}
}
//---------------
void cleanmem(int** array, const int n)
{
for(int i = 0; i < n; ++i)
{
delete[] array[i];
}
delete[] array;
}
//---------------
int** Transposition(int** matrix, const int n)
{
int** transmatx = newmatrix(n);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
transmatx[j][i] = matrix[i][j];
}
}
return transmatx;
}
//-------------------------
void Calculations (int** transmatx, int** vector, int** results, const int n)
{
int sum;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
sum+=(transmatx[i][j]+*vector[j]);
}
*results[i]=sum;
}
}