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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kartasskiy
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 86
#1

Сформировать массив из элементов матрицы - C++

24.08.2011, 18:10. Просмотров 745. Ответов 5
Метки нет (Все метки)

Дан двумерный
массив. Сформировать одномерный массив,каждый элемент которого равен количеству элементов
соответствующего столбца
двумерного массива,больших
числа n
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2011, 18:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать массив из элементов матрицы (C++):

Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы - C++
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы...

Сформировать массив из элементов матрицы - C++
Дан двумерный массив. Сформировать одномерный массив, каждый элемент которого равен среднему арифметическому четных положительных элементов...

Сформировать массив из элементов матрицы - C++
С массива В m, n построить массив С, выполняя деление каждого элемента массива В на min элемент в столбце (С++). за ранние спасибо.

Сформировать массив из элементов матрицы - C++
Из заданного массива А получить массив В попарно переставив первый и последний столбец, второй и предпоследней и т.д.

Сформировать массив из элементов матрицы - C++
задача следующая: дана матрица A(NxN). сформировать ономерный массив по следующим правилам:если аii<0(i=2,...,n-1),в качестве bi взять...

Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. - C++
Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
24.08.2011, 20:03 #2
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
#include <iostream>
#include <cstddef>
 
int main()
{
    const std::size_t M = 3;
    const std::size_t N = 4;
 
    int arr2D[M][N];
 
    for(std::size_t i = 0; i < M; ++i)
    {
        for(std::size_t j = 0; j < N; ++j)
        {
            std::cout << "[" << i+1 << "][" << j+1 << "]:";
            std::cin >> arr2D[i][j];
        }
    }
 
    std::cout << "arr2D:\n";
    for(std::size_t i = 0; i < M; ++i)
    {
        for(std::size_t j = 0; j < N; ++j)
            std::cout << arr2D[i][j] << ' ';
        std::cout << '\n';
    }
 
    int n;
    std::cout << "n: ";
    std::cin >> n;
 
    int c;
    int arr[N];
 
    std::cout << "arr:\n";
    for(std::size_t j = 0; j < N; ++j)
    {
        c = 0;
 
        for(std::size_t i = 0; i < M; ++i)
            if(arr2D[i][j] > n) ++c;
 
        arr[j] = c;
        std::cout << arr[j] << ' ';
    }
 
    std::cout << '\n';
 
    return 0;
}
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
24.08.2011, 21:30 #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
немного побаловался с boost::multi_array:

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
#include <iostream>
#include <algorithm>
#include <functional>
#include <boost/multi_array.hpp>
#include <boost/random.hpp>
#include <boost/array.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
 
const int ROWS = 5;
const int COLS = 3;
 
boost::mt19937 rng;
boost::uniform_int <> range(0, 100);
boost::variate_generator <boost::mt19937, boost::uniform_int <> > gen(rng, range);
 
struct GenerateMatrix {
    int operator()() {
       return gen(); 
    }
};
 
typedef boost::multi_array <int, 2> Array2D;
 
 
struct GetArray {
    GetArray(Array2D::array_view <1>::type* _views, int _number) : views(_views), number(_number), index(-1) {  }
    int operator()() {
        this->index++;
        return std::count_if(this->views[this->index].begin(), this->views[this->index].end(), std::bind2nd(std::greater<int>(), this->number));
    }
 
private:
    Array2D::array_view <1>::type* views;
    int number, index;
};
 
int main() {
    typedef boost::multi_array_types::index_range range;
    Array2D matrix(boost::extents[ROWS][COLS]);
    boost::array <int, COLS> result_array;
    boost::multi_array_ref <int, 1> matrix_ref(matrix.data(), boost::extents[matrix.num_elements()]);
    int number = 60;
    
    std::generate(matrix_ref.begin(), matrix_ref.end(), GenerateMatrix());
    
    Array2D::array_view <1>::type views[COLS] = {
        matrix[boost::indices[range()][0]],
        matrix[boost::indices[range()][1]],
        matrix[boost::indices[range()][2]]
    };
 
    std::generate(result_array.begin(), result_array.end(), GetArray(views, number));
    
    std::cout << "Matrix: " << std::endl;
    for (std::size_t i = 0; i != matrix.size(); ++i) {
        std::copy(matrix[i].begin(), matrix[i].end(), std::ostream_iterator <int>(std::cout, "\t"));
        std::cout << '\n';
    }
    std::cout << "Final array: " << std::endl;
    std::copy(result_array.begin(), result_array.end(), std::ostream_iterator <int>(std::cout, "\t"));
    
    return 0;
}
4e87
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51
25.08.2011, 04:03 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <algorithm>
#include <functional>
#include <boost/multi_array.hpp>
#include <boost/random.hpp>
#include <boost/array.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
 
const int ROWS = 5;
const int COLS = 3;
 
boost::mt19937 rng;
boost::uniform_int <> range(0, 100);
boost::variate_generator <boost::mt19937, boost::uniform_int <> > gen(rng, range);
 
struct GenerateMatrix {
    int operator()() {
       return gen(); 
    }
};
 
typedef boost::multi_array <int, 2> Array2D;
 
 
struct GetArray {
    GetArray(Array2D::array_view <1>::type* _views, int _number) : views(_views), number(_number), index(-1) {  }
    int operator()() {
        this->index++;
        return std::count_if(this->views[this->index].begin(), this->views[this->index].end(), std::bind2nd(std::greater<int>(), this->number));
    }
 
private:
    Array2D::array_view <1>::type* views;
    int number, index;
};
 
int main() {
    typedef boost::multi_array_types::index_range range;
    Array2D matrix(boost::extents[ROWS][COLS]);
    boost::array <int, COLS> result_array;
    boost::multi_array_ref <int, 1> matrix_ref(matrix.data(), boost::extents[matrix.num_elements()]);
    int number = 60;
    
    std::generate(matrix_ref.begin(), matrix_ref.end(), GenerateMatrix());
    
    Array2D::array_view <1>::type views[COLS] = {
        matrix[boost::indices[range()][0]],
        matrix[boost::indices[range()][1]],
        matrix[boost::indices[range()][2]]
    };
 
    std::generate(result_array.begin(), result_array.end(), GetArray(views, number));
    
    std::cout << "Matrix: " << std::endl;
    for (std::size_t i = 0; i != matrix.size(); ++i) {
        std::copy(matrix[i].begin(), matrix[i].end(), std::ostream_iterator <int>(std::cout, "\t"));
        std::cout << '\n';
    }
    std::cout << "Final array: " << std::endl;
    std::copy(result_array.begin(), result_array.end(), std::ostream_iterator <int>(std::cout, "\t"));
    
    return 0;
}
какой-то зловещий код для такой задачи)
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
25.08.2011, 09:17 #5
4e87, вбей в поиск "Написать программу Hello World!"
откроешь для себя много нового
Kartasskiy
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 86
25.08.2011, 10:36  [ТС] #6
спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 10:36
Привет! Вот еще темы с ответами:

Сформировать одномерный массив из элементов матрицы - C++
помогите решить задачу,пожалуйста: Дан двумерный массив размерностью 4*6, заполненный целыми числами с клавиатуры. Сформировать...

Сформировать одномерный массив Х из элементов матрицы А... - C++
помогите пожалуйста! никак не получается сделать основную задачу. остановился на этом варианте, но все равно не получается - записываю...

Сформировать одномерный массив из элементов матрицы - C++
Дан двумерный массив размерностью 5 х 6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент...

Сформировать одномерный массив из элементов матрицы - C++
Есть двумерный массив, 5*6 Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.08.2011, 10:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru