Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
n1191
0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
1

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

11.10.2015, 01:21. Просмотров 257. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2015, 01:21
Ответы с готовыми решениями:

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

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

Преобразовать двумерный целочисленный массив в одномерный
С++ Написать программу, преобразующую двумерный целочисленный массив в одномерный, &quot;развернув&quot;...

Как преобразовать одномерный массив в двумерный?
Есть масcив типа ABCDEFG нужно чтобы каждый пятый элемент начинался с новой строки ABCDE FG Как...

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

4
hoggy
Эксперт С++
7631 / 3437 / 714
Регистрация: 15.11.2014
Сообщений: 7,847
Завершенные тесты: 1
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
n1191
0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
11.10.2015, 02:13  [ТС] 3
Ох... Спасибо конечно. Но я ничего не понял )))
Мб есть вариант по проще? Что бы я мог таки понять )
0
Байт
Эксперт C
22265 / 14021 / 2962
Регистрация: 24.12.2010
Сообщений: 29,905
11.10.2015, 08:26 4
Цитата Сообщение от n1191 Посмотреть сообщение
Что бы я мог таки понять
Тут возможны 2 подхода.
Первый - упрощать код, приближая его к твоему пониманию
Второй - учить тебя, приближая тебя к его пониманию.
Как ты думаешь, какой подход следует выбрать?
0
n1191
0 / 0 / 1
Регистрация: 29.10.2013
Сообщений: 34
11.10.2015, 14:33  [ТС] 5
Я думаю учить тут меня никто не будет )
0
11.10.2015, 14:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 14:33

Вывести каждую вторую строку матрицы в обратном порядке
не могу найти ошибку в программе. программа должа решать задачу: Из одномерного массива,...

Преобразовать двумерный в одномерный
Ребят,подскажите,как преобразовать двумерный массив в одномерный, при этом не увеличивая число...

Каждую строку матрицы Z(5,4) преобразовать по правилу
Дана задача. Каждую строку матрицы Z(5,4) преобразовать по правилу: если максимальный элемент не...


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

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

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