0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
1

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

26.05.2012, 21:18. Показов 1933. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2012, 21:18
Ответы с готовыми решениями:

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

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

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

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

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
35522 / 19997 / 4186
Регистрация: 12.02.2012
Сообщений: 33,176
Записей в блоге: 13
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
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
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
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
27.02.2013, 00:23 6
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
char a[10] = "privet";
инициализация символьного массива при объявлении, если так не получилось сделать, то символы вводяться в массив посимвольно
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
35522 / 19997 / 4186
Регистрация: 12.02.2012
Сообщений: 33,176
Записей в блоге: 13
27.02.2013, 10:45 7
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
по какой причине массиву не удаётся присвоить значение после объявления переменной
- по причине синтаксиса С/С++
а вот так:

C++
1
2
   char a[10];
   strcpy(a,"привет");
скорее всего, сработает.
0
Эксперт С++
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
Модератор
Эксперт функциональных языков программированияЭксперт Python
35522 / 19997 / 4186
Регистрация: 12.02.2012
Сообщений: 33,176
Записей в блоге: 13
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2013, 14:23

Инициализация массива
Здравствуйте! хм... сначала написал так. POINT p={00,00,10,10,10,10,10,10}; потом подумал, решил...

Инициализация массива C++
Почему, если мы не инициализируем переменную, то при попытке работы с ней будет ошибка int main(){...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru