![]() |
|
Модераторы: bsa |
![]()
|
|
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Здравствуйте. Помогите пожалуйста решить проблему. Допустим int n=random(1000). Как в ходе выполнения программы создать n массивов?
Теоретически это можно было бы решить так:
Т.е. выходит массив массивов (что и нужно). Но мой компилятор не может работать с типом данных string. |
|||
|
||||
| kurtis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
1. Попробуйте так
2. Что за компилятор? 3. Как именно выглядит сообщение об ошибке? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Так, еще раз по подробней об этом. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| D2fQ |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
1. Так не выходит 2. Borland Turbo C++ 3.0 3. Undefined symbol 'string'. |
||||
|
|||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Подробнее не могу. Компилятор просто выдает ошибку Undefined symbol 'string'. Но копать нужно не в сторону string'а, а >>Допустим int n=random(1000). Как в ходе выполнения программы создать n массивов? |
|||
|
||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Только что мне подсказали это:
int **a = new int*[n]; for ... a[n] = new int[n]; Только не знаю что это >>>int **a = new int*[n]; |
|||
|
||||
| Dmi3ev |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
может так будет понятней:
можно сказать (грубо, для понимания), что это двумерный массив (матрица):
выделение памяти для столбцов, те теперь у нас массив (одномерный), надо под строки память выделить. это делается так: for (int j=0; j<n; j++) a[j]=new int[n]; вот теперь мы имеем матрицу n*n (грубо говоря), потом будем обращаться к ней так *(*(a+j)+i). в первом приближении, так -------------------- |
||||||
|
|||||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Dmi3ev, спасибо. Разобрался
|
|||
|
||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Dmi3ev, кажется, я все-таки не разобрался. Не понимаю, откуда там матрица. Мне это больше представляется так: у нас выходит один одномерный массива, в который записываются указатели, которые инициализируются как массив. Я ошибаюсь?
|
|||
|
||||
| invader |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
Ну требовалось ведь создать массив массивов???
вот и получается что у тебя создается массив который хранит указатели на массивы зы имя массива и есть указатель первый елемент массива отсюда получается что у тебя есть массив елементами которого есть массивы Это сообщение отредактировал(а) invader - 25.12.2008, 17:25 |
|||
|
||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
invader, я все это понял. Просто Dmi3ev сказал, что выходит матрица, а мне кажется, что там никакой матрицы нет. Поэтому я и написал, что не разобрался.
|
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
я сказал это для понимания... просто сложно понять в начале... что такое указатель... **a в начале лучше воспринимать как массив (двумерный)... если хочется разобраться, что такое указатели, нужно почитать... -------------------- |
|||
|
||||
| invader |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
ну вот тебе наглядное обьяснение, массив масивов, скажем 3х3 тоесть 3 массива размерности 3
1 2 3 4 5 6 7 8 9 матрица получается.... а вообще иногда указатели оч геморное дело)) сори если эт флуд) |
|||
|
||||
| D2fQ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
invader, если ты объясняешь мне, что такое двумерные массивы, то я и так это знаю.
Просто сразу не понял аналогию с двумерными массивами т.к. у меня программа работает со строками (char'овскими динамическими массивами), а мне там не нужен был доступ к их элементам - буквам (т.е. мне в "двумерном массиве" мне не нужны были элементы "столбцов", а нужны были сами "столбцы"). Всем спасибо. Это сообщение отредактировал(а) D2fQ - 26.12.2008, 03:20 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |