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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
#1

Изменение размеров массива - C++

06.03.2011, 13:49. Просмотров 1844. Ответов 9
Метки нет (Все метки)

Добрый день! Хочу попросить помощи в решении следующего вопроса, есть ли какая-то возможность изменения размерности массива пользователем? Понятно, что static const в классе или const вне класса изменить нельзя, или enum {m1, m2} не изменить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2011, 13:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение размеров массива (C++):

Изменение размеров консольноо окна - C++
Готовил лабораторную работу по программированию. Там небольшая программа запускаемая в консольном окне . Проблема заключается в следующем...

Изменение размеров и шрифта консоли - C++
#include <iostream> #include <ctime> using namespace std; int main() { const int ROW=5; const int COLUMN=5; int...

напишите программу формирования массива размеров 5 х 5 - C++
напишите программу формирования массива размеров 5 х 5 с помощью датчика случайных чисел.замените в нем все четные значения элементов...

Сформировать из элементов линейного массива квадратную таблицу А максимально возможных размеров - C++
Дан линейный массив С из N элементов. Сформировать из элементов этого массива квадратную таблицу А максимально возможных размеров. ...

Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100 - C++
Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100, если...

Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элемента - C++
Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и...

9
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.03.2011, 14:12 #2
Что значит "изменение размерности"? Сделать из одномерного массива двумерный, к примеру? В принципе, можно написать свой класс, который будет это реализовывать, но практической пользы я в этом не вижу.
Цитата Сообщение от zabuka Посмотреть сообщение
Понятно, что static const в классе или const вне класса изменить нельзя, или enum {m1, m2} не изменить.
А это вообще к чему?
0
IrineK
Заблокирован
06.03.2011, 14:14 #3
есть ли какая-то возможность изменения размерности массива пользователем?
А зачем? Приведите пример.
0
zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
06.03.2011, 14:21  [ТС] #4
Цитата Сообщение от Nameless One Посмотреть сообщение
Что значит "изменение размерности"? Сделать из одномерного массива двумерный, к примеру? В принципе, можно написать свой класс, который будет это реализовывать, но практической пользы я в этом не вижу.
Прошу прощения, не размерности массива, а размера массива
Цитата Сообщение от Nameless One Посмотреть сообщение
А это вообще к чему?
К тому, что кое кто мне доказывал, что можно изменить.
Цитата Сообщение от IrineK Посмотреть сообщение
А зачем? Приведите пример.
Задача Лафоре: создать массив limit[10][10], с возможностью делать массив меньше чем 10 на 10.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.03.2011, 14:32 #5
zabuka, в С/С++, в принципе, нет массивов как типов данных - есть указатели на область памяти + "синтаксический сахар" в виде оператора доступа по индексу и определения статических массивов. Поэтому в общем случае "массив" в С не имеет никакой информации о своем размере (размер статического массива еще можно узнать). Это я к тому, что размер массива должен знать пользователь. Задача изменения размера динамического массива в С решается с помощью функции realloc, в С++ с помощью выделения массива нового размера, копирование в него элементов старого и удаления старого.
Цитата Сообщение от zabuka Посмотреть сообщение
Задача Лафоре: создать массив limit[10][10], с возможностью делать массив меньше чем 10 на 10.
Что значит "возможность делать массив меньше, чем 10 на 10?"
1
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
06.03.2011, 14:35 #6
Цитата Сообщение от zabuka Посмотреть сообщение
Задача Лафоре: создать массив limit[10][10], с возможностью делать массив меньше чем 10 на 10.
В таком случае пользуйтесь указателями и new, delete or malloc, free
C
1
2
3
4
5
int **limit;
limit = (int**)malloc(sizeof(int*) * 10);
for (i = 0; i < 10; i++) {
 limit[i] = (int*)malloc(sizeof(int) * 10);
}
П.С. как пример.

Добавлено через 2 минуты
уменьшить/увеличить realloc
1
zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
06.03.2011, 14:39  [ТС] #7
Цитата Сообщение от Nameless One Посмотреть сообщение
zabuka, в С/С++, в принципе, нет массивов как типов данных - есть указатели на область памяти ...
Цитата Сообщение от bobrovskii Посмотреть сообщение
В таком случае пользуйтесь указателями и new, delete or malloc, free
Спасибо за помощь! Я учу С++ по книге Лафоре, сейчас еще не дошел до указателей. Обращусь к вашим подсказкам позже, как изучу данную главу.

Цитата Сообщение от Nameless One Посмотреть сообщение
Что значит "возможность делать массив меньше, чем 10 на 10?"
Простите, но я не смогу ответить на Ваш вопрос, поскольку цитирую задание из книги, а уровень знаний ограничен.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.03.2011, 14:50 #8
zabuka, может, имелось в виду что-то типа этого:
C
1
2
3
4
5
6
7
8
int limit[10][10];
size_t maxDim1 = 8, maxDim2 = 7; /* Размеры "нового массива" */
/* А дальше работаем с массивом так, как будто
 * maxDim1, maxDim2 - это размеры массива:
 */
for(i = 0; i < maxDim1; ++i)
    for(j = 0; j < maxDim2; ++j)
        /* ... */
1
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
06.03.2011, 14:57 #9
Цитата Сообщение от zabuka Посмотреть сообщение
Задача Лафоре: создать массив limit[10][10], с возможностью делать массив меньше чем 10 на 10.
Меньше - не больше, можно просто работать с частью массива, а оставшуюся часть просто инорировать.
0
zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
06.03.2011, 21:52  [ТС] #10
Цитата Сообщение от kazak Посмотреть сообщение
Меньше - не больше, можно просто работать с частью массива, а оставшуюся часть просто инорировать.
Задание такое.
0
06.03.2011, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 21:52
Привет! Вот еще темы с ответами:

Изменение массива - C++
Вставить в массив два числа следующим образом: первое со значением N перед всеми элементами, большими N, и второе со значением M – после...

Изменение исходного массива - C++
В массиве записана информация о росте каждого из 25 учеников класса(в порядке убывания роста). Из класса выбыли два ученика. Получить...

Изменение массива в функции - C++
В процессе разработки возникла проблема. Нам надо передать в процедуру (тип функции void) двумерный массив, изменить его в ней....

Изменение размера массива - C++
Как без использования функций изменить размер массива? int x=10; int m1; int m2; int m3; iny k = 0; for (int i = 0; i &lt; x: i...


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

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

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