Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

найти новую матрицу (программа)

40K
04 ноября 2010 года
mego4el
30 / / 19.09.2010
Добрый вечер. ув. форумчане, есть задание:

Дано действительную квадратную матрицу порядка n. Получить новую матрицу путем замены элементов, сумма индексов которых четная на среднее геометрическое модулей элементов, находящихся на главной диагонали.

по которому была написана программа:

Код:
#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;
}


пожалуйста помогите найти ошибки\бессмысленные действия\упростить программу.
возможно кто-нибудь видит более простое решение этой задачи?, буду очень благодарен, спасибо заранее.
297
04 ноября 2010 года
koodeer
1.2K / / 02.05.2009
Цитата: mego4el

 
Код:
float pr=1;

sr_geo = (int)exp(log((float)pr)/n);

помогите найти ошибки\бессмысленные действия\упростить программу


Сдаётся мне, приведение к типу float здесь не нужно, так как переменная pr и так имеет этот тип.

Цитата: mego4el

 
Код:
delete arr;


Освободить нужно не только память, выделенную под arr, но и под все строки arr матрицы: также в цикле, как выделяли память с помощью new, также удаляете с помощью delete.

40K
05 ноября 2010 года
mego4el
30 / / 19.09.2010
простите, а как правильно удалить в моем примере? пишу delete arr[] вроде это не правильно?
14K
05 ноября 2010 года
Fenja
138 / / 20.03.2009
[QUOTE=mego4el] а как правильно [/QUOTE]
ответ же дан:
[QUOTE=koodeer]также в цикле, как выделяли память с помощью new[/QUOTE]
40K
05 ноября 2010 года
mego4el
30 / / 19.09.2010
delete arr

когда пишу так, то выдает ошибку при запуске программы.
297
05 ноября 2010 года
koodeer
1.2K / / 02.05.2009
 
Код:
for(int i=0; i<n; ++i)
    delete arr;
delete arr;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог