→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 
Функции друзья 
Автор Сообщение
Начинающий

Регистрация: 31.12.2009
Сообщения: 8

Репутация: 0 [ ? ]
Сообщение Функции друзья
Доброго времени суток! Еще один вопрос. Необходимо с помощью дружественных функций организовать нахождение минимума, максимума, среднего арифметического матриц. И потом подсчитать сумму и количество элементов меньших среднего арифметического. Проблема в том, что минимум считается корректно, а максимум нет. Кроме того, сумму и количество элементов меньших среднего арифметического тоже не удается подсчитать корректно.(Подозреваю, что значение ср. арифметического просто не передается в функцию).

Код программы:

#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#include<stdio.h>

char Name;

class Matrix {


int i,j,n,m;
int *B;
double avg;

public:

Matrix(int ,int);
~Matrix();
friend void print(Matrix&);
friend void average(Matrix&);
friend void min(Matrix&);
friend void max(Matrix&);
friend void proc(Matrix&);

};

Matrix::Matrix(int a, int b)
{
cout<<"Matrix "<<Name<<"\n";
cout<<'\n';
n=a;
m=b;
B = new int[n*m];

for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
*(B+i*(m-1)+j) = rand()%10;
}
}

Matrix::~Matrix(){
delete[]B;
}


void print(Matrix &ob){

int i,j;

for(i=0;i<ob.n;i++)
{
for(j=0;j<ob.m;j++)
{
cout<<*(ob.B+i*(ob.m-1)+j)<<" ";

}
cout<<'\n';
}
cout<<'\n';
}

void average(Matrix &ob){

int i,j,k=0,S=0;
double avg;

for(i=0;i<ob.n;i++)
{
for(j=0;j<ob.m;j++)
{
S=S+*(ob.B+i*(ob.m-1)+j);
k++;
}

}
avg = (double)S/k;
cout<<"Average = "<<avg<<'\n';
cout<<"S="<<S<<'\n';
cout<<"k="<<k<<'\n';
cout<<'\n';
cout<<'\n';
}

void min(Matrix &ob){

int i,j;
int Min=(int)ob.B;

for(i=0;i<ob.n;i++)
{
for(j=0;j<ob.m;j++)
{
if(*(ob.B+i*(ob.m-1)+j)<Min){Min=*(ob.B+i*(ob.m-1)+j);}

}

}
cout<<"Min = "<<Min<<'\n';
cout<<'\n';

}

void max(Matrix &ob){

int i,j;
int Max=(int)ob.B;

for(i=0;i<ob.n;i++)
{
for(j=0;j<ob.m;j++)
{
if(*(ob.B+i*(ob.m-1)+j)>Max){Max=*(ob.B+i*(ob.m-1)+j);}

}

}
cout<<"Max = "<<Max<<'\n';
cout<<'\n';

}

void proc(Matrix &ob){
int i,j;
int S=0, k=0;

for(i=0;i<ob.n;i++)
for(j=0;j<ob.m;j++)
{
if(*(ob.B+i*(ob.m-1)+j)>ob.avg)
{
S=S+*(ob.B+i*(ob.m-1)+j);
k++;
}
}
cout<<"Sum of elements less than average="<<S<<'\n';
cout<<"Num of elements less than average="<<k<<'\n';
}

void main(){

srand(time(0));

Name = 'A';
Matrix A(3,4);
print(A);
average(A);
min(A);
max(A);
proc(A);

Name = 'B';
Matrix B(2,2);
print(B);
average(B);
min(B);
max(B);
proc(B);



}


27.03.2010 14:57
Профиль Отправить email
Начинающий

Регистрация: 31.12.2009
Сообщения: 8

Репутация: 0 [ ? ]
Сообщение Re: Функции друзья
Разобрался


30.03.2010 20:01
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»