Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 21:16   #1
Dear11
Новичок
Джуниор
 
Регистрация: 04.01.2011
Сообщений: 2
Восклицание Проблемы с программой...

Дана матрица а[4][5],надо найти строку с максимальным средним арифметическим элементов и сформировать матрицу D,исключив из А найденную строку
матрица:

Цитата:
1.2 2.1 .3 -8.4 6
5.2 -1.6 7.2 11.2 3.4
4.2 15.1 6.8 -7.3 10.6
-5.9 18.4 9.2 -1.6 -2.1
Код:
#include "stdafx.h"
    
#include <iostream>
#include <cstdlib>
#include <cstddef>
#include <iomanip>
#include <cmath>
#include <fstream>
using namespace std;
class array1
{double* b;
int n;
public:
array1(int nn);
array1();
array1(const array1& ob);
~array1();
int getn();
double& getb(int n);
void set1(int i,double v);
};
 
class array2
{double** a;
int n,m;
public:
array2(int nn,int nm);
array2();
array2(const array2& ob);
~array2();
int getn();
int getm();
double& geta(int k,int l);
void set(int i,int j,double v);
void inputm();
void outputm();
double array2::func();
void outputv();
};
//конструктор array1
array1::array1(int nn)
{n=nn;
b=new double [n];
if (b==NULL){cout<<"\n нет оп ";
exit(1);
}
}
//конструктор по умолчанию array1
array1::array1()
{
}
//деструктор array1
array1::~array1()
{
}
//конструктор копий array1
array1::array1(const array1 &ob)
{n=ob.n;
b=new double[n];
if (b==NULL){cout<<"\n нет оп " ;
exit(1);
}
for (int i=0;i<n;i++)
b=ob.b;
}
//методы доступа array1
int array1::getn()
{return n;
}
double& array1::getb(int r)
{return b[r];
}
 
void array1::set1(int i,double v)
{b[i]=v;
}
 
//конструктор array2
array2::array2(int nn,int nm)
{ n=nn;
m=nm;
a=new double* [n];
if(a==NULL) {cout<<"\n НеТ ОП";exit(1); }
for(int i=0;i<n;i++)
{a[i]=new double [m];
if(a[i]==NULL) {cout<<"\n НеТ ОП";exit(1);}
}
}
//конструктор по умолчанию array2
array2::array2()
{
}
//конструктор копий array2
array2::array2(const array2 &ob)
{n=ob.n;
m=ob.m;
a=new double* [n];
if(a==NULL) {cout<<"\n НеТ ОП";
exit(1);
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
a[i][j]=ob.a[i][j];
}
//деструктор array2
array2::~array2()
{//delete[] a;
}
//методы доступа array2
int array2::getn()
{return n;
}
int array2::getm()
{return m;
}
 
double& array2::geta(int k,int l)
{return a[k][l];
}
void array2::set(int i,int j,double v)
{a[i][j]=v;
}
 
void array2::inputm()
{cout<<"\n Введите матрицу";
for (int i=0;i<n;i++)
{
cout<<"\n Введите "<<i+1<<"-ую строку: ";
for(int j=0;j<m;j++)
cin>>a[i][j];
}
}
void array2::outputm()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<setw(8)<<a[i][j];
}
}
double array2::func()
{
double SA;
int i,j,k;
double** b;
b=new double* [n];
if(b==NULL) {cout<<"\n Не хватает ОП";exit(1);}
for(i=0;i<n;i++)
{
b[i]=new double[m];
if(b[i]==NULL) {cout<<"\n Не хватает ОП";exit(1);}
}
double Sravn=0;
for(i=0;i<n;i++)
{
 
SA=0;
for(j=0;j<m;j++)
SA+=a[i][j]/m;
if(SA>Sravn) {Sravn=SA;k=i;}
}
cout<<"\n Макс. среднее арифметическое: "<<Sravn;
cout<<"\n Строка с макс. средним арифметическим: "<<k+1;
for(i=0;i<k;i++)
for(int j=0;j<m;j++)
b[i][j]=a[i][j];
for(i=k;i<n-1;i++)
for(j=0;j<m;j++)
b[i][j]=a[i+1][j];
}
// Функция для удаления строки
array2 udal (array2& x, int k)
{// Объявляем и инициализируем
int i,j;
array2 y(x.getn()-1, x.getm());
for (i=0; i<k; i++)
{for (j=0; j<x.getm(); j++)
{y.geta(i,j)=x.geta(i,j);
}
}
for (i=k; i<x.getn()-1; i++)
{for (j=0; j<x.getm(); j++)
{y.geta(i,j)=x.geta(i+1,j);
}
}
return y;
}
void main()
{setlocale(LC_ALL,"Russian");
int n,m;
cout<<"\n Введите кол-во строк матрицы: ";
cin>>n;
cout<<"\n Введите кол-во столбцов матрицы: ";
cin>>m;
array2 f(n,m);
f.inputm();
 
f.func();
cout<<"\n Изменённая матрица: \n";
f.outputm();
cout<<endl;
system("pause");
}

не удаляется строка,и конечная матрица выводится в строку...

Последний раз редактировалось Stilet; 24.02.2013 в 21:29.
Dear11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с программой gsl180 C++ Builder 2 14.07.2012 22:53
Проблемы с программой на C alpan Помощь студентам 0 31.05.2011 14:22
Проблемы с программой Veina Помощь студентам 0 09.04.2011 20:01
Проблемы с установленной программой Спартак Общие вопросы Delphi 8 06.07.2008 18:06