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

Тема в разделе "C/C++/C#", создана пользователем victory, 4 ноя 2014.

  1. victory

    victory New Member

    Регистрация:
    4 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    Определить функцию определения столбца с наибольшей суммой модулей его элементов, функцию определения минимального элемента столбца и функцию формирования требуемого массива.
    #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;

    }
     
  2. Evgeniy

    Evgeniy Member

    Регистрация:
    23 авг 2014
    Сообщения:
    16
    Симпатии:
    0
    Код (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;
    }
    Вопросы по коду в этой теме, если есть.
     
Загрузка...

Поделиться этой страницей