0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
1

Преобразовать двумерный массив в одномерный, удаляя каждую вторую строку

11.10.2015, 01:21. Показов 461. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста как 2D массив преобразовать в 1D, при этом удаляя каждую 2рую строку.
Прилагаю свой вариант кода... Мб подскажите как сделать что бы не ругался на попытку записать int** в int*


Заранее спасибо)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* make_array1D(int** arr, int nRows, int nCols)
{
    const unsigned int SIZE = 10;
    int* arr1D = new int[SIZE];
 
    for (int i = 0; i<nRows; i+=2) 
    {
        for (int j = 0; j<nCols; j++) 
        { 
            *(arr1D + i*nCols + j) = *(*(arr+i)+j);    
        }
        cout << endl;
    }
 
    for (int i = 0; i < SIZE; i++)
        cout << arr1D[i] << " ";
    return arr1D;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2015, 01:21
Ответы с готовыми решениями:

Преобразовать строку, заменив каждую вторую строчную букву на прописную
Добрый день. Преобразовать строку, заменив каждую вторую строчную букву на прописную (текст...

Преобразовать одномерный массив, увеличив каждую его серию на 1 элемент
Подскажите,пожалуйста, как написать эту программу. Дан целочисленный массив размера N. Назовем...

Преобразовать одномерный массив в двумерный
Помогите уже два дня мучаюсь с данной задачей. Задание: нужно преобразовать данный одномерный...

Преобразовать одномерный массив в двумерный
Преобразовать одномерный массив v(9) в двумерный W(3,3).Использовать при этом подпрограмму...

4
Эксперт С++
8616 / 4178 / 928
Регистрация: 15.11.2014
Сообщений: 9,474
11.10.2015, 02:00 2
http://rextester.com/ZHQXI13711
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
#include <iostream>
#include <iomanip>
 
// --- генерация одномерного массива по двухмерному
// автоматически рассчитывает необходимый размер выходного массива
// считывает только каждую вторую строку 
template<class T, size_t ROWS, size_t COLUMNS>
const T (&generate(const T (&src)[ROWS][COLUMNS]))[ COLUMNS*(ROWS/2+1) ]
{
    size_t n=0;
    static T arr[ COLUMNS*(ROWS/2+1) ];
    
    for(size_t i = 0; i<ROWS; i+=2 )
        for(const auto& el: src[i])    
            arr[n] = el,
            ++n;
        
    return arr;
}
 
// --- служит для красивого отображения содержимого массива
template<class T, size_t ROWS, size_t COLUMNS>
void view(const T (&src)[ROWS][COLUMNS])
{
    std::cout.flags(std::ios_base::right);
    
    std::cout<<"src[" << ROWS << "][" << COLUMNS << "]) = {\n";
    
    for(const auto& row: src)
    {
        std::cout<<"    {";
        for(const auto& i: row)
            
            std::cout<< std::setw(3)<< i << ",";
        std::cout<<" },\n";
        
    }
    std::cout<<"};\n";
}
 
// --- служит для красивого отображения содержимого массива
template<class T, size_t N>
void view(const T (&src)[N])
{
    std::cout<<"arr["<<N<<"] = { ";
    
    for(const auto& i: src)
        std::cout<< i << ",";
    std::cout<<"};\n";
}
 
 
int main()
{
    const int src[3][5] = 
    {
        { 1, 2, 3, 4, 5,},
        { 6, 7, 8, 9,10,},
        {11,12,13,14,15,},
    };
    
    std::cout << "Hello, world!\n";
    view(src);
    
    const auto& result = generate(src);
    
    view(result);
}
0
0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
11.10.2015, 02:13  [ТС] 3
Ох... Спасибо конечно. Но я ничего не понял )))
Мб есть вариант по проще? Что бы я мог таки понять )
0
Диссидент
Эксперт C
26355 / 16361 / 3558
Регистрация: 24.12.2010
Сообщений: 36,244
11.10.2015, 08:26 4
Цитата Сообщение от n1191 Посмотреть сообщение
Что бы я мог таки понять
Тут возможны 2 подхода.
Первый - упрощать код, приближая его к твоему пониманию
Второй - учить тебя, приближая тебя к его пониманию.
Как ты думаешь, какой подход следует выбрать?
0
0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
11.10.2015, 14:33  [ТС] 5
Я думаю учить тут меня никто не будет )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2015, 14:33

Преобразовать двумерный массив в одномерный
как преобразовать двумерный массив в одномерный например 1 2 3 4 5 6 8 9 3 2 3 1 надо...

Преобразовать двумерный массив в одномерный
Дано двумерный массив a. Необходимо создать одномерный массив b, располагая в нем элементы по...

Преобразовать одномерный массив в двумерный
Кусок кода. который должен был создавать таблицу с заданного текста. на вид он работает правильно...

Преобразовать одномерный массив S из 15 элементов в двумерный
Здравствуйте, помогите пожалуйста решить задачи на VBA,пытаюсь сделать,но не получается....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru