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

Заполнить двумерный массив неизвестной длины - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двусвязный линейный список http://www.cyberforum.ru/cpp-beginners/thread131334.html
Помогите пожалуйста написать эти программы :( Двусвязный линейный список, Быстрая сортировка ,Пузырьковая с удалением/дополнением , двоичный поиск в массиве,Тип файла Двоичный , Структура данных Массив направление сортировки-обратное
C++ Удаление элемента из линейного однонапраленного списка. Говорят, что существует множество способов удаления из списка. Вот один из них: void los::del_el() { int key; los *q, *w, *e; cout << "vvedite key: "; cin >> key; q=p; http://www.cyberforum.ru/cpp-beginners/thread131332.html
Не могу понять ошибка ли это? C++
МЕТОД Ньютона Зашел в тему, но по моему тут ошибка либо, я что то не пойму... При взятии производной от исходной функции double f(double x) { x*x-(cos(pi*x)); }
C++ тест
как можно сделать простой тест на С++ Builder,3 возможных варианта ответа, 1 правильный выбор в CheckBox ? тольк отбросив вариант когда вопросы задаются в коде !знаю есть способ с помощью подключения текст файликов но незнаю как сделать !
C++ Переписать числа из массива X в массив Y в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread131297.html
Дан массив X из 10 чисел. Переписать числа из массива X в массив Y в обратном порядке (Y(1)=X(10),Y(2)=X(9) и т.д.). Операции с элементами массива осуществлять при помощи нотации индексов. Добавлено через 1 час 0 минут и вот еще Даны векторы X={x1, x2, x3}, Y={у1, у2, у3} и Z={z1, z2, z3}. Построить матрицу A(3,3), строками которой являются соответственно векторы X,Y и Z, упорядоченные в...
C++ Разработать структуру данных Разработать структуру данных для представления бинарного дерева, в вершинах которого хранятся указатели на действительные числа. Дан массив действительных чисел и массив такой же длины из вер- шин дерева. Разработать функцию, переориентирующую связи в це- почке так, чтобы все элементы, меньшие, чем N-й, шли в списке до него, а большие – после. Индекс N в первом массиве задается пара-... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
18.05.2010, 13:34     Заполнить двумерный массив неизвестной длины
Размер вектора можно в любой момент увеличить функцией resize:
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
#include <vector>
#include <iostream>
 
typedef std::vector<int> T_int_vector;
typedef std::vector<T_int_vector> T_int_int_vector;
 
int& int_int_vector_elem_ref
    (
        T_int_int_vector& iiv,
        size_t            i,
        size_t            j        
    )
{
    const int               default_value = -1;
    if(iiv.size() <= i)     iiv.resize(i * 2 + 1); 
    if(iiv[i].size() <= j)  iiv[i].resize(j * 2 + 1, default_value);
    return iiv[i][j];    
}
 
int main()
{
    const size_t dim_i = 3;
    const size_t dim_j = 4;
    int A[dim_i][dim_j] = {{1,2,3,10},
                           {4,5,6,10},
                           {7,8,9,10}};
    //Создаем пустой двумерный вектор.
    T_int_int_vector v;
 
    //Выводим содержимое пустого двумерного вектора.
    for(size_t i = 0; i < dim_i; ++i)
    {
        for(size_t j = 0; j < dim_j; ++j)
        {
            std::cout << int_int_vector_elem_ref(v, i, j)
                      << ' '; 
        }
        std::cout << std::endl;
    }
 
    //Присваиваем ему значения. 
    for(size_t i = 0; i < dim_i; ++i)
    {
        for(size_t j = 0; j < dim_j; ++j)
        {
            int_int_vector_elem_ref(v, i, j) = A[i][j];
        }
    }  
 
    std::cout << std::endl;
    //Выводим содержимое заполненного двумерного вектора.
    for(size_t i = 0; i < dim_i; ++i)
    {
        for(size_t j = 0; j < dim_j; ++j)
        {
            std::cout << int_int_vector_elem_ref(v, i, j)
                      << ' '; 
        }
        std::cout << std::endl;
    }
    return 0;
}
А контейнер map при отсутствии элемента, запрашиваемого по индексу, создает его со значением по умолчанию. Если в качестве такового значения устраивает ноль, то можно так сделать:
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
#include <iostream>
#include <map>
 
typedef std::map<size_t, int>        T_int_arr;
typedef std::map<size_t, T_int_arr>  T_int_int_arr;
 
int main()
{
    const size_t dim_i = 3;
    const size_t dim_j = 4;
    int A[dim_i][dim_j] = {{1,2,3,10},
                           {4,5,6,10},
                           {7,8,9,10}};
    //Создаем пустой двумерный массив.    
    T_int_int_arr  v;
    //Присваиваем ему значения.
    for(size_t i = 0; i < dim_i; ++i)
    {
        for(size_t j = 0; j < dim_j; ++j)
        {            
            v[i][j] = A[i][j];
        }
    }
 
    //Выводим содержимое двумерного массива.    
    for(size_t i = 0; i < dim_i; ++i)
    {
        for(size_t j = 0; j < dim_j; ++j)
        {            
            std::cout << v[i][j]
                      << ' ';
        }
        std::cout << std::endl;
    } 
    return 0;
}
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru