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

Форум программистов: 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 ] 


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

Зарегистрированные пользователи: Google [Bot]


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

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