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

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

Войти
Регистрация
Восстановить пароль
 
xLGSx
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
#1

Инициализация массива длинны N - C++

26.05.2012, 21:18. Просмотров 727. Ответов 9
Метки нет (Все метки)

Требуется задать массив с Энным количеством членов, n вводится с клавиатуры.
При попытке создания массива
C++ (Qt)
1
2
3
4
5
...
int n;
scanf("%d",&n);
А[n]
...
выдается ошибка "C2057: требуется константное выражение"
пробуем так:
C++ (Qt)
1
2
3
4
5
6
...
int n;
scanf("%d",&n);
int const g = n;
А[g]
...
снова ошибка "C2057: требуется константное выражение",
однако
C++ (Qt)
1
2
3
4
...
int const g = 10;
А[g]
...
работает корректно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 21:18     Инициализация массива длинны N
Посмотрите здесь:

Создание массива динамической длинны - C++
Раньше писал на C# а сейчас вот нужно на плюсах написать небольшую задачку, не могу создать массив определенной длинны.... короче *ret...

Классы. Метод изменения длинны массива - C++
Начал изучать классы. Захотел сделать массив с изменяющимся размером. если я ставлю размер меньше 5, то в ячейках оказывается мусор. ...

Разбитие массива на некое количество подмассивов одинаковой длинны - C++
Здравствуйте. Для решения моей основной задачи требуется разбитие массива на некое количество подмассивов одинаковой длинны. Проблема в...

Инициализация массива - C++
int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl; cin >> n; mas = new int * ; for (int i = 0; i < n;...

инициализация массива - C++
Доброго времени. Инициализация массива с указанием размера 80 проходит гладко, при указании допустимого размера 12 выдает ошибку. Почему?

Инициализация массива - C++
Нужно объявить несколько статических строк, содержащих байты со значениями в диапазоне от 1 до 255 Пытаюсь что-то в этом духе: ...

Инициализация динамического массива - C++
Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве. Но мне нужно очень, чтобы программа сама...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
22448 / 10853 / 1768
Регистрация: 12.02.2012
Сообщений: 17,971
26.05.2012, 21:33     Инициализация массива длинны N #2
Массив в переменными границами должен быть динамическим.

C++
1
2
3
4
5
6
int *Arr;
int n;
    
     scanf("%d",&n);
 
     Arr=new int[n];
MrGluck
Модератор
Эксперт CЭксперт С++
6992 / 4163 / 594
Регистрация: 29.11.2010
Сообщений: 11,045
26.05.2012, 21:43     Инициализация массива длинны N #3
В сишном стиле:
C
1
2
3
4
int n;
scanf("%d",&n);
int *Arr = (int*) calloc (n,sizeof(int)); /* выделяем память */
free(Arr); /* освобождаем память*/
xLGSx
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
26.05.2012, 22:02  [ТС]     Инициализация массива длинны N #4
Цитата Сообщение от Catstail Посмотреть сообщение
Массив в переменными границами должен быть динамическим.

C++
1
2
3
4
5
6
int *Arr;
int n;
    
     scanf("%d",&n);
 
     Arr=new int[n];
Спасибо, все работает.
Сетевой Боб
1 / 1 / 0
Регистрация: 01.02.2013
Сообщений: 28
27.02.2013, 00:19     Инициализация массива длинны N #5
Скажите пожалуйста, по какой причине массиву не удаётся присвоить значение после объявления переменной?

Например:

C++
1
2
3
4
char a[10] = "privet"; / - работает
 
char a[10];
a = "privet"; / - не работает
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
27.02.2013, 00:23     Инициализация массива длинны N #6
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
char a[10] = "privet";
инициализация символьного массива при объявлении, если так не получилось сделать, то символы вводяться в массив посимвольно
Catstail
Модератор
22448 / 10853 / 1768
Регистрация: 12.02.2012
Сообщений: 17,971
27.02.2013, 10:45     Инициализация массива длинны N #7
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
по какой причине массиву не удаётся присвоить значение после объявления переменной
- по причине синтаксиса С/С++
а вот так:

C++
1
2
   char a[10];
   strcpy(a,"привет");
скорее всего, сработает.
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 11:52     Инициализация массива длинны N #8
Цитата Сообщение от Catstail Посмотреть сообщение
- по причине синтаксиса С/С++
При чем тут синтаксис. Просто после объявления массива, к примеру,
C++
1
int arr[5];
arr суть константа. Поэтому присвоить ей что-то нельзя. В то время, как область памяти по адресу - не является константной, если иное не оговорено при объявлении.
C++
1
const int arr[5] = { 0, 0, 0 };
Catstail
Модератор
22448 / 10853 / 1768
Регистрация: 12.02.2012
Сообщений: 17,971
27.02.2013, 12:16     Инициализация массива длинны N #9
Цитата Сообщение от ITcrusader Посмотреть сообщение
При чем тут синтаксис. Просто после объявления массива, к примеру,
Код C++
1
int arr[5];
arr суть константа.
- это и есть синтаксис
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 14:23     Инициализация массива длинны N
Еще ссылки по теме:

Инициализация двумерного массива - C++
Учу С++ и переделываю шахматы в ооп. Не получается написать конструктор для двумерного массива. На С было: int position = { {...

Инициализация массива в классе - C++
Как инициализировать массив в классе? Пишу такой код, но компилятор выдает: 9:53: error: incompatible types in assignment of 'int' to...

Инициализация статического массива - C++
Ребята, помогите пожалуйста. Не получается проинициализировать NULL-ами статиеский массив указателей. Пишет слудеющее (прикрепил скриншот)....

Инициализация символьного массива - C++
Не получается инициализировать в программе символьный массив #include <iostream> using namespace std; struct names{ char...

Инициализация двумерного массива - C++
Подскажите пожалуйста как проинициализировать двумерный массив размером 10 на 10.(самый простой пример)


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

Или воспользуйтесь поиском по форуму:
aLarman
27.02.2013, 14:23     Инициализация массива длинны N
  #10

Не по теме:

Цитата Сообщение от ITcrusader Посмотреть сообщение
Просто после объявления массива, к примеру,

C++
1
int arr[5];
arr суть константа.
я бы поспорил насчет константности

Yandex
Объявления
27.02.2013, 14:23     Инициализация массива длинны N
Ответ Создать тему
Опции темы

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