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

Файловый ввод/вывод, динамические массивы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рандом http://www.cyberforum.ru/cpp-beginners/thread34349.html
Как проще всего рандомно разыграть для переменной значение 1 или 0....?
C++ Почему не записывает в файл данные? Файловый вывод. Help!!!!!!! привет всем! консольное приложение С++(компилятор BC++ 6.0) тема работы поиск всех вхождений подстроки в строку по маске (*,? ) может кто подскажет почему в этом коде не... http://www.cyberforum.ru/cpp-beginners/thread34348.html
C++ сортировка структуры по возрастанию времени C++
ребят,такое задание было у меня в Pascal,в С++ возникли проблемы с ним,не могу провести сортировку(хотя бы любым способом),помогите пожалуйста,ввод я обеспечил,а дальше никак(( В процессе...
C++ чем отличается вызов объекта через "." и через "->"
Здравствуйте. Вот создал топик для тех, кто желает сам познать С++, но у которых есть вопросы по базовым знаниям. Начну с вопроса: чем отличается вызов объекта через "." и через "->" И в каких...
C++ Разложить числа на простые множители http://www.cyberforum.ru/cpp-beginners/thread34342.html
Здравствуйте, всем. Помогите пожалуйста может кто знает. Как в C++ разложить числа на простые множители. Составить программу, которая выдаёт разложение данного числа N на простые множители. Например...
C++ При присвоении числа float появляется хвост! присваеваю переменной Float 1.44 получаю 1,44000005722046 может FloatToStr работает некоректно? class computer { public: computer(char *, int, float); String Text(void); private: ... подробнее

Показать сообщение отдельно
body90
364 / 297 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
26.05.2009, 00:40
Многомерные динамические массивы
Многомерный массив в C++ по своей сути одномерен. Операции new[] и delete[] позволяют создавать и удалять динамические массивы, поддерживая при этом иллюзию произвольной размерности. Деятельность по организации динамического массива требует дополнительного внимания, которое окупается важным преимуществом: характеристики массива (операнды операции new) могут не быть константными выражениями. Это позволяет создавать многомерные динамические массивы произвольной конфигурации. Следующий пример иллюстрирует работу с динамическими массивами.

C++
1
#include <iostream.h>int fdArr(int **, int, int);int fdArr(int ***, int, int, int);// Одноимённые функции. Различаются списками списками параметров.// Это так называемые перегруженные функции. О них позже.void main(){int i, j;/* Переменные (!) для описания характеристик массивов.*/int dim1 = 5, dim2 = 5, dim3 = 10, wDim = dim2;/*Организация двумерного динамического массива производится в два этапа.Сначала создаётся одномерный массив указателей, а затем каждому элементуэтого массива присваивается адрес одномерного массива. Для характеристикразмеров массивов не требуется константных выражений.*/int **pArr = new int*[dim1];for (i = 0; i < dim1; i++) pArr[i] = new int[dim2];pArr[3][3] = 100;cout << pArr[3][3] << endl;fdArr(pArr,3,3);/*Последовательное уничтожение двумерного массива…*/for (i = 0; i < dim1; i++) delete[]pArr[i];delete[]pArr;/*Организация двумерного "треугольного" динамического массива. Сначаласоздаётся одномерный массив указателей, а затем каждому элементу этогомассива присваивается адрес одномерного массива. При этом размер(количество элементов) каждого нового массива на единицу меньшеразмера предыдущего. Заключённая в квадратные скобки переменная вописателе массива, которая, в данном контексте, является операндомоперации new, позволяет легко сделать это.*/int **pXArr = new int*[dim1];for (i = 0; i < dim1; i++, wDim--) pXArr[i] = new int[wDim];pXArr[3][3] = 100;cout << pArr[3][3] << endl;fdArr(pXArr,3,3);/*Последовательное уничтожение двумерного массива треугольной конфигурации…*/for (i = 0; i < dim1; i++) delete[]pXArr[i];delete[]pXArr;/*Создание и уничтожение трёхмерного массива требует дополнительной итерации.Однако здесь также нет ничего принципиально нового.*/int ***ppArr;ppArr = new int**[dim1];for (i = 0; i < dim1; i++) ppArr[i] = new int*[dim2];for (i = 0; i < dim1; i++){for (j = 0; j < dim2; j++) ppArr[i][j] = new int[dim3];}ppArr[1][2][3] = 750; cout << ppArr[1][2][3] << endl; fdArr(ppArr,1,2,3);for (i = 0; i < dim1; i++){for (j = 0; j < dim2; j++) delete[]ppArr[i][j];}for (i = 0; i < dim1; i++) delete[]ppArr[i];delete[] ppArr;}int fdArr(int **pKey, int index1, int index2){cout << pKey[index1][index2] << endl;}int fdArr(int ***pKey, int index1, int index2, int index3){cout << pKey[index1][index2][index3] << endl;
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru