Форум программистов, компьютерный форум CyberForum.ru

Найти сумму максимальных значений элементов её строк - C++

Восстановить пароль Регистрация
 
Andrewss
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 6
24.04.2012, 00:35     Найти сумму максимальных значений элементов её строк #1
В двумерном массиве найти сумму максимальных значений элементов её строк. Создать функцию преобразования двумерного массива в одномерный.
В MVS C++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 00:35     Найти сумму максимальных значений элементов её строк
Посмотрите здесь:

Найти сумму наибольших значений элементов строк матрицы C++
C++ Найти минимальный элемент из максимальных элементов строк двухмерного массива целых чисел
C++ Найти сумму наибольших значений элементов строк матрицы
найти сумму наибольших значений элементов строк массива с++ C++
Найти минимальный из максимальных элементов строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
24.04.2012, 01:35     Найти сумму максимальных значений элементов её строк #2
Заполнение двумерного массива случайными числами от 0 - 10 и вычисление максимальной суммы значений строк

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
 
#define SIZE 10 // длина массива
 
int sum_maxlile(int arr[][SIZE]);
 
int main(int argc, char *argv[])
{
    int arr[SIZE][SIZE]; // массив 10x10
 
    // заполняю массив случайными числами
    srand((unsigned int)time(NULL));
    for(int i = 0; i < SIZE; i++)
        for(int j = 0; j < SIZE; j++)
            arr[i][j] = rand()%10;
 
    // вывожу массив на экран
    for(int i = 0; i < SIZE; i++)
    {
        for(int j = 0; j < SIZE; j++)
            cout << arr[i][j] << " ";
 
        cout << endl;
    }
 
    cout << endl<< 
        "max sum of strings = " << sum_maxlile(arr) << endl;
 
    system("pause");
    return 0;
}
 
// нахожу максимальную сумму строк массива
int sum_maxlile(int arr[][SIZE])
{
    int max_result = 0;
 
    for(int i = 0; i < SIZE; i++)
    {
        int temp = 0;
        for(int j = 0; j < SIZE; j++) 
            temp += arr[i][j];
 
        if(temp > max_result) max_result = temp;
    }
 
    return max_result;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
24.04.2012, 03:16     Найти сумму максимальных значений элементов её строк #3
Цитата Сообщение от Andrewss Посмотреть сообщение
Создать функцию преобразования двумерного массива в одномерный.
Это как бы невозможно. Преподаватель предлагает объявить указатель на указатель, а потом чудным образом его "преобразовать" в просто указатель. Уточни у него эти слова, он видимо был после большой гулянки когда давал задачи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
class parampampam {
    
private:
#define DEFAULT_SIZE    ( 5 )
    int **matrix;
    int *array;
    size_t size;
    size_t index_array;
 
public:
    
    parampampam() {
        size = DEFAULT_SIZE;        
        matrix = new int* [ size ];        
        for ( size_t i = 0; i < size; ++i )
            matrix[ i ] = new int[ size ];
        array = new int[ size * size ];
        index_array = 0;
    }
    
    parampampam ( size_t y ) {
        size = y;        
        matrix = new int* [ size ];        
        for ( size_t i = 0; i < size; ++i )
            matrix[ i ] = new int[ size ];
        array = new int[ size * size ];
        index_array = 0;
    }
    
    int max_of_row( int* arr ) {        
        int max = arr[ 0 ];
        size_t i = 1;        
        while ( i < size ) {
            if ( max < arr[ i ] )
                max = arr[ i ];
            ++i;
        }
        return max;
    }
    
    int sum_of_max() {        
        int sum = 0;
        for ( size_t i = 0; i < size; ++i )
            sum += max_of_row( matrix[ i ] );
        return sum;
    }
    
    void set_rand_member() {        
        for ( size_t i = 0; i < size; ++i )
            for ( size_t j = 0; j < size; ++j ) {
                array[ index_array ] = matrix[ i ][ j ] = rand() % 10;
                ++index_array;
            }
        index_array = 0;
    }
    
    void print_matrix() {
        for ( size_t i = 0; i < size; ++i ) {
            for ( size_t j = 0; j < size; ++j )
                std::cout << std::setw( 2 ) << matrix[ i ][ j ];
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
    
    void print_array() {
        size_t i = size * size;
        while ( index_array < i )
            std::cout << std::setw( 2 ) << array[ index_array++ ];
        std::cout << std::endl;
        index_array = 0;
    }
    
    ~parampampam(){
        for ( size_t i = 0; i < size; ++i )
            delete [] matrix[i];
        delete [] matrix;
        delete [] array;
    }
};
 
int main() {
    srand( time ( 0 ) );    
    parampampam x(4);
    x.set_rand_member();
    x.print_matrix();
    std::cout << "сумма максимумов строк = " << x.sum_of_max() << std::endl;
    std::cout << "массив ";
    x.print_array();
    std::cout << std::endl;
        
    return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.04.2012, 06:25     Найти сумму максимальных значений элементов её строк #4
Цитата Сообщение от Andrewss Посмотреть сообщение
В двумерном массиве найти сумму максимальных значений элементов её строк.
У функции нет элементов строк.

Добавлено через 9 минут
Цитата Сообщение от alkagolik Посмотреть сообщение
Это как бы невозможно.
С каких это пор элементарнейшая линерализация массива стала не возможной?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
double *lineral(double **&data, int rows, int collumns)
{
 double *result;
 double **row;
 double *p1;
 double *p2;
 if (data)
 {
   result=new double [rows*rows];
   if (result)
   {
    for (row=data+rows-1; row>=data; --row)
    {
      for (p1=*row+collumns-1, p2=result+row-data+collumns-1; p1>=*row; --p1, --p2)
      {
        *p2=*p1;
      }
      delete [] row;
    }
    delete [] data;
    data=NULL;
   }
   return result;
 }
 return NULL;
}
. Этот примитив не возможен? Однако!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
24.04.2012, 12:25     Найти сумму максимальных значений элементов её строк #5
taras atavin, ты на приколе? Ты берешь двумерный массив, копируешь его в одномерный, удаляешь и возвращаешь другой массив не преобразовав двумерный в одномерный. Ты просто копирастишь, потому что иного выхода как бэ и нету. Это же реализовано и в #3, двумерный отдельно, одномерный отдельно.
Цитата Сообщение от taras atavin Посмотреть сообщение
У функции нет элементов строк.
Речь идет о максимумах элементов строк матрицы. Их сумма и нужна на выходе.
Yandex
Объявления
24.04.2012, 12:25     Найти сумму максимальных значений элементов её строк
Ответ Создать тему
Опции темы

Текущее время: 20:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru