Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
xLGSx
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
1

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

26.05.2012, 21:18. Просмотров 845. Ответов 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]
...
работает корректно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 21:18
Ответы с готовыми решениями:

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

Классы. Метод изменения длинны массива
Начал изучать классы. Захотел сделать массив с изменяющимся размером. если я...

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

Удалить из строки слова нечетной длинны и перевернуть (ьтунревереп ) слова нечетной длинны
#include <iostream> using namespace std; void func(char*stroka, int str,...

Инициализация массива
Есть массив: int d; Есть константа бесконечности (просто константа) inf,...

9
Catstail
Модератор
23873 / 11922 / 2103
Регистрация: 12.02.2012
Сообщений: 19,387
26.05.2012, 21:33 2
Массив в переменными границами должен быть динамическим.

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

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

Например:

C++
1
2
3
4
char a[10] = "privet"; / - работает
 
char a[10];
a = "privet"; / - не работает
0
olya7
497 / 311 / 234
Регистрация: 18.02.2013
Сообщений: 745
27.02.2013, 00:23 6
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
char a[10] = "privet";
инициализация символьного массива при объявлении, если так не получилось сделать, то символы вводяться в массив посимвольно
1
Catstail
Модератор
23873 / 11922 / 2103
Регистрация: 12.02.2012
Сообщений: 19,387
27.02.2013, 10:45 7
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
по какой причине массиву не удаётся присвоить значение после объявления переменной
- по причине синтаксиса С/С++
а вот так:

C++
1
2
   char a[10];
   strcpy(a,"привет");
скорее всего, сработает.
0
ITcrusader
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 11:52 8
Цитата Сообщение от Catstail Посмотреть сообщение
- по причине синтаксиса С/С++
При чем тут синтаксис. Просто после объявления массива, к примеру,
C++
1
int arr[5];
arr суть константа. Поэтому присвоить ей что-то нельзя. В то время, как область памяти по адресу - не является константной, если иное не оговорено при объявлении.
C++
1
const int arr[5] = { 0, 0, 0 };
0
Catstail
Модератор
23873 / 11922 / 2103
Регистрация: 12.02.2012
Сообщений: 19,387
27.02.2013, 12:16 9
Цитата Сообщение от ITcrusader Посмотреть сообщение
При чем тут синтаксис. Просто после объявления массива, к примеру,
Код C++
1
int arr[5];
arr суть константа.
- это и есть синтаксис
0
aLarman
27.02.2013, 14:23     Инициализация массива длинны N
  #10

Не по теме:

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

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

0
27.02.2013, 14:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 14:23
Привет! Вот еще темы с ответами:

Инициализация массива
int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl;...

инициализация массива
Доброго времени. Инициализация массива с указанием размера 80 проходит гладко,...

Инициализация массива
Нужно объявить несколько статических строк, содержащих байты со значениями в...


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

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

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