#include <iostream>
#include <ctime>
#include <cmath>
using std::cout;
using std::cin;
using std::endl;
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(i==j)
{
pr*=abs(arr[j]);
}
}
}
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
int **arr;
cout<<"Vvedite razmer massiva: ";
cin>>n;
arr = new int*[n];
cout<<"Massiv: "<<endl;
for(i=0; i<n; i++)
{
arr = new int[n];
for(j=0; j<n; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
sr = sr_geo(arr,n);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if((i+j)%2==0)
{
arr[j]= sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
system("pause");
return 0;
}
найти новую матрицу (программа)
Дано действительную квадратную матрицу порядка n. Получить новую матрицу путем замены элементов, сумма индексов которых четная на среднее геометрическое модулей элементов, находящихся на главной диагонали.
по которому была написана программа:
Код:
пожалуйста помогите найти ошибки\бессмысленные действия\упростить программу.
возможно кто-нибудь видит более простое решение этой задачи?, буду очень благодарен, спасибо заранее.
Цитата: mego4el
Код:
float pr=1;
sr_geo = (int)exp(log((float)pr)/n);
sr_geo = (int)exp(log((float)pr)/n);
помогите найти ошибки\бессмысленные действия\упростить программу
Сдаётся мне, приведение к типу float здесь не нужно, так как переменная pr и так имеет этот тип.
Цитата: mego4el
Код:
delete arr;
Освободить нужно не только память, выделенную под arr, но и под все строки arr матрицы: также в цикле, как выделяли память с помощью new, также удаляете с помощью delete.
простите, а как правильно удалить в моем примере? пишу delete arr[] вроде это не правильно?
ответ же дан:
[QUOTE=koodeer]также в цикле, как выделяли память с помощью new[/QUOTE]
когда пишу так, то выдает ошибку при запуске программы.
Код:
for(int i=0; i<n; ++i)
delete arr;
delete arr;
delete arr;
delete arr;