По Написанному Коду Нужно Определить Некоторые Функции Массива

victory

New member
04.11.2014
4
0
#1
Определить функцию определения столбца с наибольшей суммой модулей его элементов, функцию определения минимального элемента столбца и функцию формирования требуемого массива.
#include <cstdlib>
#include <iostream>
#include <cstdio>

int main ( ) {

const int m = 5, n = 7;
int arr[m][n];
int sum_abs[n];

for ( int i = 0; i < m; ++i ) {
for ( int j = 0; j < n; ++j ) { arr[j] = rand() % 20; printf("%2i ", arr[j]); }
std::cout << std::endl;
}

for ( int j = 0; j < n; ++j ) {
sum_abs[j] = 0;
for ( int i = 0; i < m; ++i )
sum_abs[j] += abs(arr[j]);
}


int max_sum = sum_abs[0];
int max_count = 1;

for ( int i = 0; i < n; ++ i )
if ( max_sum < sum_abs ) { max_sum = sum_abs; max_count = 1; }
else if ( max_sum == sum_abs ) ++max_count;

int * minimals = new int[max_count];

for ( int min_i = 0, i = 0; i < n; ++i ) {
if ( sum_abs != max_sum ) continue;

minimals[min_i] = arr[0];
for ( int j = 1; j < m; ++j )
if ( minimals[min_i] > arr[j] ) minimals[min_i] = arr[j];
++min_i;
}

std::cout << std::endl << "Minimals: ";
for ( int i = 0; i < max_count; ++i ) std::cout << minimals << " ";
std::cout << std::endl;

system("pause");
return 0;

}
 
23.08.2014
16
0
#2
C++:
#include <iostream>

void Init(int arr[5][7])
{
for ( int i = 0; i < 5; ++i ) 
{
for ( int j = 0; j < 7; ++j ) 
{	
arr[i][j] = rand() % 20; 
printf("%2i ", arr[i][j]);
} 
std::cout << std::endl;
}
std::cout << std::endl;
}

int *Sum(int arr[5][7], int *sum_abs, int *max_count, int *max_sum, int &index_colum)
{
for ( int j = 0; j < 7; ++j ) 
{
sum_abs[j] = 0;
for ( int i = 0; i < 5; ++i )
sum_abs[j] += abs(arr[i][j]);
}

*max_sum = sum_abs[0];
for ( int i = 0; i < 7; ++ i ) 
{
if(*max_sum < sum_abs[i]) 
{ 
*max_sum = sum_abs[i]; 
*max_count = i;	
index_colum = i;
}
if(*max_sum == sum_abs[i]) 
++(*max_count);
}
return sum_abs;
}

int *Min_element(int arr[5][7], int *max_count)
{
int *minimals = new int[*max_count];
for(int j(0); j < 7; j++)
{
minimals[j] = arr[0][j];
for(int i(0); i < 5; i++)
{
if(minimals[j] > arr[i][j])
minimals[j] = arr[i][j];
}
}
return minimals;
}

void Print_info(int *sum_abs, int *minimals, int &max_element, int &index_colum, int &max_count)
{
for(int i(0); i < max_count; i++)
std::cout << "Cумма всех элемнтов[" << i+1 << "] cтолбца: " << sum_abs[i] << std::endl;

std::cout << std::endl;
std::cout << "Столбец №[" << index_colum+1 << "] имеет максимальную сумму: " << max_element << std::endl;
std::cout << std::endl;

for(int i(0); i < max_count; i++)
std::cout << "the minimum element of the column" << '[' << i+1 << "]: " << minimals[i] << std::endl;
}

int main() 
{
setlocale(LC_ALL,"Rus");
const int m = 5, n = 7;
int arr[m][n];
int sum_abs[n];
int max_count(0);
int max_sum(0);
int index_colum;

Init(arr);
Sum(arr, sum_abs, &max_count, &max_sum, index_colum);
int *minimals = Min_element(arr,&max_count);
Print_info(sum_abs,minimals,max_sum,index_colum,max_count);

delete [] minimals;
system("pause");
return 0;
}
Вопросы по коду в этой теме, если есть.