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

Как создать двумерный динамический массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 152, средняя оценка - 4.91
Kirsan14
Сообщений: n/a
04.10.2012, 22:38     Как создать двумерный динамический массив #1
Помогите, пожалуйста, в таком вопросе: нужно создать динамический двумерный массив. Да он еще должен быть такой, чтоб длина строк была разной, а элементы вводились не при инициализации, а уже при исполнении проги.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 22:38     Как создать двумерный динамический массив
Посмотрите здесь:

Возможно ли создать двумерный динамический массив? C++
C++ Как создать динамический двумерный массив
C++ Как объявить двумерный динамический массив
C++ Создать двумерный динамический массив, найти максимальный элемент и его индексы
C++ Как объявлять двумерный динамический массив
C++ Как создать динамический двумерный массив с использованием функции malloc?
C++ Как реализовать двумерный динамический массив?
Как создать динамический двумерный массив C++
C++ Как создать двумерный динамический массив (принцип лото)?
C++ Создать шаблонный класс - двумерный динамический массив
Создать двумерный динамический массив заданного пользователем размера C++
C++ Создать динамический двумерный массив и заполнить его

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
05.10.2012, 09:52     Как создать двумерный динамический массив #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
#include <iostream> 
#include <iomanip>
 
int main() 
{ 
    int M = 3; // размеры
    int N = 4; 
    int i, j;
    int** matrix; 
 
    matrix = new int*[M]; 
    for ( i = 0; i < M; i++) 
        matrix[i] = new int[N];  
 
    for ( i = 0; i < M; i++) // ввод 
        for ( j = 0; j < N; j++) 
        { 
            std::cout << "Inter element " << "[" << i << "][" << j << "]  "; 
            std::cin >> matrix[i][j]; 
        }   
 
        
 
        std::cout << std::endl; // вывод
        for ( i = 0; i < M; i++) 
            for ( j = 0; j < N; j++) 
            { 
                if( j % N == 0) 
                    std::cout << std::endl; 
                std::cout << std::setw(3) << matrix[i][j]; 
            } 
            std::cout << std::endl;
}
Kirsan14
Сообщений: n/a
07.10.2012, 22:46     Как создать двумерный динамический массив #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
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
#include <iostream>
#include <iomanip>
 
int main() 
{ 
    int M; // Количество строк
    int N; //Количество столбцов
    int q = 0;
    int i, j;
    int** matrix;
    std::cout<<"Enter M";
    std::cin>>M;
 
    matrix = new int*[M]; 
    int* B;
    B=new int[q];
    for ( i = 0; i < M; i++) 
        matrix[i] = new int[N];  
 
    for ( i = 0; i < M; i++) // ???? 
    {
B:;
  std:: cout <<"Enter N: ";
  std::cin>>N;
  B[q]=N;
  q++;
        for ( j = 0; j < N; j++) 
        { 
            std::cout << "Inter element " << "[" << i << "][" << j << "]  "; 
            std::cin >> matrix[i][j]; 
        }   
    }
        
 
        std::cout << std::endl; // ?????
        q=0;
        for ( i = 0; i < M; i++) 
        {
            N=B[q];
            q++;
            for ( j = 0; j < N; j++) 
            { 
                if( j % N == 0) 
                    std::cout << std::endl; 
                std::cout << std::setw(3) << matrix[i][j]; 
            } 
        }
            std::cout << std::endl;
            std::cout<<N;
            //Работа программы
            for (i=0; i<M; i++)
{
    for (j=0; j<m; j++)
        if (massX[i][j]<0)
        {
            massC[l]=i;
            l++;
            j=m;
        }
        if (c>i) 
            goto E;
}
if (l<=1)
{
    cout<<"There is no required answer."<<endl;
goto S;
}
E:;
  std::cout <<"Your answer is line number "<<massC[1]+1<<endl;
  std::cout<<"Lines with negative elements: ";
  for (c=0;c<l;c++)
  std::cout <<massC[c]+1<<"  ";
  std::cout <<endl;
  delete [] massX, massC;
}
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 05:44     Как создать двумерный динамический массив #4
В 17 строке используете N, а значение N ещё не ввели.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.10.2012, 10:34     Как создать двумерный динамический массив #5
Цитата Сообщение от Kirsan14 Посмотреть сообщение
нужно создать динамический двумерный массив. Да он еще должен быть такой, чтоб длина строк была разной
C++
1
2
3
4
5
6
    int** matrix;  
    matrix = new int*[M]; 
    for ( i = 0; i < M; i++) 
    {
        matrix[i] = new int[N];// вот здесь значение N нужно делать разным, чтобы длины строк были разными  
    }
только обязательно нужно где-то хранить длины строк. Можно для этого использовать массив типа int размером M.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.10.2012, 10:49     Как создать двумерный динамический массив #6
Kirsan14, надо просто всегда помнить, что двумерным его зовут только для простоты, а на самом деле на сях и на плюсах нет многомерных массивов, а есть только массивы массивов. И тогда всё просто: двумерный массив есть линейный массив линейных массивов и задача сводится к созданию линейного динамического массива. Причём, так как элементы сами - динамические массивы, а динамические массивы реализуются указателями, то это просто динамический массив указателей. А после его создания надо создать его элементы, что тоже просто: это линейные динамические массивы.
Yandex
Объявления
08.10.2012, 10:49     Как создать двумерный динамический массив
Ответ Создать тему
Опции темы

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