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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.97
Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
#1

Преобразование двумерного массива в одномерный - C++

01.09.2012, 16:34. Просмотров 4072. Ответов 10
Метки нет (Все метки)

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

Преобразование двумерного массива в одномерный - C++
Помогите преобразовать данный двумерный массив в одномерный #include <iostream> #include <stdlib.h> #include <math.h> using...

Преобразование двумерного массива - C++
Добрый вечер. Сегодня передо мной поставили задачу следующего содержания: Даны 2 двумерных массива X и Y. Необходимо найти...

Преобразование двумерного массива - C++
Помогите нужно написать функцию которая преобразовывает матрицу в строку по схеме например 1 2 3 4 5 6 7 8 9 в такую строку ...

Преобразование двумерного массива - C++
Есть массив: 1 4 5 7 6 4 5 3 7 8 2 7 4 1 3 4 5 6 9 1 3 2 6 8 5 На выходе получится: 7 0 0 4 0 8 7 0 4 3 7 4 3 2 1

залить из двумерного массива данные в одномерный длиной, равной количеству всех элементов исходного массива - C++
Доброго времени суток :) Образовался новый глупый вопрос... Предположим у меня есть двухмерный массив: vertex** massiv() { ...

Преобразование двумерного массива.Подскажите пжл! - C++
Преобразовать массив S, осуществив поворот вокруг его центра на 90 градусов против часовой стрелки. =-O Помогите кто чем может!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
01.09.2012, 17:53 #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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <random>
#include <ctime>
 
int main()
{
    std::random_device rand;
    std::mt19937 gen(rand());
    std::uniform_int_distribution <> distr(-10, 30);
    int rows, cols, size;
    std::cin>>rows>>cols>>size;
    std::vector <std::vector <int>> matrix(rows, std::vector <int> (cols, 0));
    std::vector <int> vec;
    for_each(matrix.begin(), matrix.end(), [&vec, &gen, &distr, &size] (std::vector <int> &curLine) -> std::vector <int>
    {
        std::generate(curLine.begin(), curLine.end(), [&gen, &distr] () -> int { return distr(gen); });
        std::copy(curLine.begin(), curLine.end(), std::ostream_iterator <int> (std::cout, " "));
        std::cout<<std::endl;
        int lineSize = std::accumulate(curLine.begin(), curLine.end(), 0);
        if(lineSize < size)
        vec.push_back(lineSize); 
        return curLine;
    });
    std::copy(vec.begin(), vec.end(), std::ostream_iterator <int> (std::cout, " "));
    return 0;
}
http://liveworkspace.org/code/1ebac8...6a4897347f3a97
1
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.09.2012, 17:58 #3
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
 
#define N 10
 
int main()
{
    int** A = new int*[N];
    for (int m1 = 0; m1 < N; m1++)
    {
        A[m1] = new int[N];
        for (int m2 = 0; m2 < N; m2++)
        {
            A[m1][m2] = rand() % N + 1;
            printf("%d ",A[m1][m2]);
        }
 
        printf("\n");
    }
 
    printf("\n");
 
    int* B = new int[N]; int n = 5;
    memset((void*)B, 0x00, sizeof(int) * N);
 
    for (int i = 0; i < N; i++)
        for (int k = 0; k < N; k++)
            if (A[i][k] < n) B[i]+=A[i][k];
 
    for (int n1 = 0; n1 < N; n1++)
    {
        for (int n2 = 0; n2 < N; n2++)
            printf("%d ",A[n1][n2]);
 
        printf(" sum = %d\n", B[n1]);
    }
 
    printf("\n");
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/87b5a3...ac993f4635628b
0
Миниатюры
Преобразование двумерного массива в одномерный  
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
01.09.2012, 18:11 #4
Цитата Сообщение от Dekio Посмотреть сообщение
C++
1
2
3
        int lineSize = std::accumulate(curLine.begin(), curLine.end(), 0);
        if(lineSize < size)
        vec.push_back(lineSize);
Здесь наверное ТС имел ввиду такое условие:
C++
1
2
3
        int lineSize = std::accumulate(curLine.begin(), curLine.end(), 0, [&](int res, int value){return value<size?res+value:res;});
        //if(lineSize < size)
        vec.push_back(lineSize);
0
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
01.09.2012, 18:20 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    const int Rows = 5, Colls = 5;
    int Matrix[Rows][Colls], Array[Rows];
    
    std::cout << "Matrix: " << std::endl;
    for(int i = 0; i < Rows; i++)
    {
            for(int j = 0; j < Colls; j++)
            {
                    Matrix[i][j] = rand() % 25;
                    std::cout << std::setw(4) << Matrix[i][j] << " ";
            }
            std::cout << std::endl;
    }
    
    int Number = 0, Count = 0;
    std::cout << "Enter number: ";
    std::cin >> Number;
    
    for(int i = 0; i < Rows; i++)
    {
            int Summa = 0;
            for(int j = 0; j < Colls; j++)
                    Summa += Matrix[i][j];
            if(Summa < Number)
                     Array[Count++] = Summa;
    }
    
    std::cout << "Array: " << std::endl;
    for(int i = 0; i < Count; i++)
            std::cout << std::setw(4) << Array[i];
    std::cout << std::endl;
    
    system("pause");
    return 0;
}
1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
01.09.2012, 18:21 #6
I.M., не уверены, не пишите.

Цитата Сообщение от Мирзали Посмотреть сообщение
меньших числа n.
1
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
01.09.2012, 18:25 #7
zitxbit, мне кажется Ваша программа делает далеко не то, что попросил ТС
0
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
01.09.2012, 18:29 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как вариант..

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
#include <iostream>
#include <algorithm>
#include <random>
#include <vector>
 
#include <boost/multi_array.hpp>
 
const int N = 10; 
const int M = 10;   
 
int main() {
   typedef boost::multi_array <int, 2> matrix_t;
   typedef boost::multi_array_types::index_range range;
   typedef matrix_t::array_view <1>::type matrix_view;
   typedef boost::multi_array_ref <int, 1> array_ref;
   
   std::random_device random_dev;
   
   matrix_t matrix(boost::extents[N][M]);
   array_ref matrix_ref(
      matrix.data(),
      boost::extents[matrix.num_elements()]
   );
 
   std::generate(
      matrix_ref.begin(),
      matrix_ref.end(),
      std::bind(
         std::uniform_int_distribution <int>(0, 10),
         std::mt19937(random_dev())
      )
   );
   
   int number = 6;
   std::vector <int> v_result;
   for (std::size_t index = 0; index < N; index++) {
      matrix_view row_view = matrix[boost::indices[index][range()]];
      v_result.push_back(
         std::accumulate(
            row_view.begin(),
            row_view.end(),
            0,
            [number](int lhs, int rhs) -> int {
               return lhs += (rhs < number) ? rhs : 0;
            }
         )
      );
   }
   
   for (std::size_t i = 0; i < N; i++) {
      std::copy(
         matrix[i].begin(),
         matrix[i].end(),
         std::ostream_iterator <int>(std::cout, "\t")
      );
      std::cout << "\n";
   }
   
   std::cout << '\n';
   for (const auto & val : v_result) {
      std::cout << val << "\t";
   }
}
http://liveworkspace.org/code/2454d2...c5bb64b02e58e9

Добавлено через 3 минуты
Цитата Сообщение от Мирзали Посмотреть сообщение
строки двумерного массива меньших числа n.
Пардон. Немного не так сделал. Извеняйте..
1
Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
01.09.2012, 19:14  [ТС] #9
спасибо. полностью забыл С++((
0
Ev[G]eN
01.09.2012, 19:24
  #10

Не по теме:

Правило 3.6: Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.

0
aned
2 / 1 / 0
Регистрация: 27.07.2013
Сообщений: 22
03.11.2013, 17:31 #11
C#
1
2
3
4
5
string[,] A= new string[M,N];
 
for(int i=0; i<M; i++)
for(int j=0; j<N ; j++)
 B[i * N + j] = A[i , j];//преобразуем двумерный массив A в одномерный B
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 17:31
Привет! Вот еще темы с ответами:

Переписать из двумерного массива в одномерный - C++
Дан массив 3*2.Надо переписать в одномерный массив элементы всех строк,где нет отрицательных элементов. Помогите пожалуйста,код есть,но...

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

Сделать из двумерного массива одномерный - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; int main() { srand (time(0)); unsigned short int a, b; ...

Перевести из двумерного массива в одномерный - C++
Здравствуйте, у меня есть вопрос. Нужно данный двумерный массив перевести в одномерный отсортированный по возрастанию массив, как это...


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

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

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