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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.93
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
#1

Массивы (ввод размера с клавиатуры) - C++

05.09.2013, 16:39. Просмотров 8601. Ответов 10
Метки нет (Все метки)

Доброго времени суток.
Вопрос теоретический.
При создании массива, если я укажу его размер через переменную,
которую буду инициализировать путем ввода с клавиатуры, будет ли это ошибкой?
Пример:
C++
1
2
3
int num;
cin >> num;
int mas[num];
Компилятор не ругается, ответ выдаёт правильный, но насколько это справедливо.
Есть ли вероятность того, что память может быть занята?
И как правильней в этой ситуации объявлять массив?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 16:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы (ввод размера с клавиатуры) (C++):

Двумерный динамический массив. Ввод размера с клавиатуры - C++
Что я делаю не так? Хочу с клавиатуры вводить размерность двумерного динамического массива, вылетает в исключение в VS или выводит что...

Ввод чисел в массив, без заданного размера с клавиатуры - C++
#include <iostream> using namespace std; int main () { int a= {ЗДЕСЬ ДОЛЖНЫ БЫТЬ ВВОДИМЫЕ С КЛАВИАТУРЫ ПО ЦИКЛУ for числа} ...

Массивы. Организовать ввод матрицы размера mxn из целых чисел - C++
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычислить произведение четных элементов...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Как правильно заменить ввод данных простой на ввод с клавиатуры? - C++
#include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) ...

Ввод массива не зная размера - C++
В языке Си это делается так. while(scanf("%d", &a)!=EOF) А как сделать то же самое на C++?

10
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
05.09.2013, 17:01 #2
Правильнее поступать так: объявлять глобальную константу и её указывать в []. или же создавать динамический массив:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int ArrSize;
cin>>ArrSize;
char* Arr=new char[ArrSize];
 
//Вывод содержимого массива
 
for(int i=0; i<ArrSize; i++)
cout<<Arr[i]<<endl;
 
//освобождение памяти когда массив не нужен больше
 
delete [] Arr;
1
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
05.09.2013, 17:08 #3
GuGo1991, поддерживаю h_wolf, надо писать через константу.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.09.2013, 17:14 #4
Цитата Сообщение от GuGo1991 Посмотреть сообщение
будет ли это ошибкой?
Да, будет. Если это язык С++ и компилятор не ругается, то это повод сменить компилятор, или хотя бы покопаться в его настройках!

Добавлено через 58 секунд
Цитата Сообщение от GuGo1991 Посмотреть сообщение
При создании массива, если я укажу его размер через переменную,
не через переменную, а через константу!
C++
1
2
const int size=10;
int mas[size];
1
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
05.09.2013, 17:16 #5
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Есть ли вероятность того, что память может быть занята?
В любом случае память вам выделиться из кучи. Просто проблема в другом, чтоб пользователь допустим не ввел слишком заоблачные значения. Ну а лучше всего выделять память через оператор new. Ну и естественно освобождать через delete [] наз_массива;
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.09.2013, 17:24 #6
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Есть ли вероятность того, что память может быть занята?
нет, если компилятор такое пропускает, то скорее всего, у него в настройках включена опция, разрешающая массивы переменного размера. Но это нестандартная фича и её нельзя считать частью языка С++!
0
h_wolf
05.09.2013, 17:24
  #7

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Сообщение от GuGo1991
будет ли это ошибкой?
Да, будет. Если это язык С++ и компилятор не ругается, то это повод сменить компилятор, или хотя бы покопаться в его настройках!
присоединяюсь

0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.09.2013, 20:00  [ТС] #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Да, будет. Если это язык С++ и компилятор не ругается, то это повод сменить компилятор, или хотя бы покопаться в его настройках!
Пишу обычно в Dev-C++. Проблем никаких не было и в данный момент тоже нет.
Просто кое-где компилятору (не важно где) важен этот нюанс.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
не через переменную, а через константу!
Код C++
1 const int size=10;
2 int mas[size];
А в данном случае могу ли я каким-либо образом ввести размер массива после компиляции?
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
05.09.2013, 20:28 #9
GuGo1991, нет.
1
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.09.2013, 20:35  [ТС] #10
Всем спасибо за ответы )
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2013, 06:48 #11
Цитата Сообщение от Bend3r Посмотреть сообщение
В любом случае память вам выделиться из кучи.
В каком это любом?

Добавлено через 11 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
то это повод сменить компилятор, или хотя бы покопаться в его настройках!
Особенность компиляторов mingw (опции по умолчанию). Чтобы реагировал на такие ошибки, нужно включить опцию: -pedantic-errors.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 06:48
Привет! Вот еще темы с ответами:

Ввод и вывод строки неизвестного размера - C++
Как ввести и вывести строку неизвестного размера в c++? Нигде просто нормального объяснения не нашел.

Ввод текста неизвестного размера в массив - C++
(Консольное приложение) Я хочу сделать так чтобы при вводе текста программа записывала каждый символ по порядку (в том числе и пробел) из...

Массив с живым заданием размера с клавиатуры - C++
Есть массив, как его размер задать с клавиатуры? чтобы а и b можно было оставить неопределенными. и как можно сделать что бы другая...

Создать двумерный массив размера, вводимого с клавиатуры - C++
Требуется создать двумерный массив размера,вводимого с клавиатуры. Одномерный у меня получился,а вот двумерный как сделать? int n; //...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
06.09.2013, 06:48
Ответ Создать тему
Опции темы

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