Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
#1

При нажатии кнопки создать массив с размерностью, указанной в Textbox - C++

30.10.2012, 15:39. Просмотров 844. Ответов 19
Метки нет (Все метки)

Задача такая:
при нажатии кнопки должен создаться массив у которого размер записывается из Textbox'a.
Проблема в том , что я объявляю массив как static,так как кнопку буду нажимать несколько раз, но тогда он ругается на то что размер не является постоянным.
как это исправить?

Добавлено через 3 минуты
Вот код
C++
1
2
3
4
5
6
7
8
9
10
    void MainWindow::on_pushButton_clicked()
{
    static int kolxy=ui->lineedit_2->text().toInt();
 
 
    static int qaz= ui->lineedit->text().toInt();
    static int i=qaz+2;
    static int b=qaz++;
    static double a[b][i],pervmas[b][i],umnmas[b][i];
}
на что выскакивает ошибки:
storage size of 'a' isn't constant и на другие массивы тоже)
не могу придумать как решить эту проблему.

Заранее спасибо.
http://www.cyberforum.ru/cpp-beginners/thread2269273.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 15:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При нажатии кнопки создать массив с размерностью, указанной в Textbox (C++):

Открытие указанной папки при нажатии на кнопку
Всем доброго времени суток! Можно ли сделать так, что бы в программе при...

Как создать динамический массив размерностью m на n?
подскажите, а то я только n на n создавать умею)

Есть динамический массив с размерностью 5, необходимо его сделать с размерностью 6, заполнить цифрами и вывести на экран
День добрый. Не хочется никому морочить голову дурацкими вопросами, поэтому...

Создать и вывести на экран двумерный массив целых чисел размерностью 3х3
1. создать и вывести на экран двумерный массив целых чисел размерностью 3х3 2....

Создать массив R, элементы которого вычисляются по указанной формуле
Создать массив R, элементы которого вычисляются по указанной формуле

19
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 15:40 #2
operator new и
operator delete
тебе помогут :-)
1
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 15:51  [ТС] #3
а можете привести пример использования new и delete?

Добавлено через 4 минуты
а также я не понимаю почему он выдаёт ошибку.
ведь значения i и b неизменны.
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 15:55 #4
Как же они неизменны то могут быть? :-)
0
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:25  [ТС] #5
но ведь они объявлены как static и поэтому как я понимаю,объявляются они только один раз.
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 16:38 #6
Они ни в коей мере не константы, а важно только это.
Если нужно создать одномерный массив с помощью new и delete, поступают так
C++
1
2
3
4
5
int count = 10;
double* array = new double[ count ];
// работаем с массивом
// удаляем массив
delete [] array;
А лучше использовать std::vector или std::array (c++11).
0
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:59  [ТС] #7
я непонимаю как работать с new, можете указать какой нибудь источник чтоб прочитать.
и во вторых я также непонимаю почему когда я эту же программу писал для консоли таких ошибок не было???там также размер массива вводился пользователем.
0
Игорь с++
472 / 464 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
30.10.2012, 19:17 #8
Цитата Сообщение от skv1d Посмотреть сообщение
можете указать какой нибудь источник чтоб прочитать
в любой нормальной книге по с++
0
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 19:45  [ТС] #9
можете тогда ответить и на этот вопрос?
Цитата Сообщение от skv1d Посмотреть сообщение
почему когда я эту же программу писал для консоли таких ошибок не было???
0
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 1
30.10.2012, 22:25 #10
Может на другом компиляторе делали?
Так как нормальный компилятор на пропустит код
C++
1
2
int a;
int b[a];
0
Invader_Zim
Twilight Parasite
153 / 149 / 7
Регистрация: 21.07.2011
Сообщений: 908
30.10.2012, 22:40 #11
Croessmah, gcc хавает вроде такое)
0
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 1
30.10.2012, 23:44 #12
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Croessmah, gcc хавает вроде такое)
В GCC используются массивы переменной длины(AVL).
Укажите GCC ключ -pedantic для того, чтобы потребовать от компилятора соблюдения стандарта и такой код не скомпилируется.
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:09 #13
Это происки C, C++ тут непричем.
0
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 1
31.10.2012, 00:18 #14
Цитата Сообщение от Герц Посмотреть сообщение
Это происки C, C++ тут непричем.
В каком смысле?
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:20 #15
Объявление массивов переменной длины в стиле обычных автоматических массивов - это фишка C, в C++ такого нет.
0
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 1
31.10.2012, 00:23 #16
Как видите, прекрасно компилируется как в gcc, так и в g++
При нажатии кнопки создать массив с размерностью, указанной в Textbox
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:57 #17
Читать, стало быть, не умеем?
ISO C++ запрещает массив переменного размера
Вы компилируете не в соответствии со стандартом C++.

Да и вообще, gcc и g++ это всего лишь алиасы, вызывающие одно и то же приложение, оба могут компилировать и C, и C++. Добавь флаг --std=c++0x например и врядли оно скомпилируется.
0
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 1
31.10.2012, 03:04 #18
Цитата Сообщение от Герц Посмотреть сообщение
это фишка C
Я согласен, что она появилась раньше в C, но до ISO C99 присутствовала только как дополнение.
Так же и теперь оно идет как расширение GNU g++
Цитата Сообщение от Герц Посмотреть сообщение
--std=c++0x например и врядли оно скомпилируется.
Кушает без проблем и ругательств.

ИМХО, такие массивы только проблем придают.
0
skv1d
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
31.10.2012, 11:31  [ТС] #19
нет компилятор один и тотже.
я имел ввиду что там код был такой.
C++
1
2
3
int i;
cin>>i;
int b[i];
Добавлено через 2 минуты
Ребят я вторую неделю с С++ работаю, и то что вы тут написали мне абсолютно непонятно)

Добавлено через 1 час 27 минут
Или просто скажите второй вариант,как сделать без static.
Если я просто объявляю массивы указывая только тип данных то он нормально всё хавает,но тогда они при каждом нажатии кнопки будут создаваться, а мне этого не нужно.

Есть какие нибудь другие варианты?????????????
0
Invader_Zim
Twilight Parasite
153 / 149 / 7
Регистрация: 21.07.2011
Сообщений: 908
02.11.2012, 18:42 #20
skv1d, Телепаты ссобщили что похоже ТС нужен динамической массив!
смотреть в гугле malloc, calloc,realloc,free,new,delete
0
02.11.2012, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 18:42
Привет! Вот еще темы с решениями:

Создать функцию, которая будет выводить указанный массив указанной длины на экран
Создать функцию , которая будет выводить указанный массив указанной длины на...

Обращение к файлу при нажатии кнопки
Имеется exe файл.Необходимо чтобы при нажатии кнопки этот файл запускался.Как...

Изменение положения формы при нажатии кнопки
На форме есть кнопка jump. Как сделать так, чтобы при нажатии на неё один раз...

При нажатии кнопки обработать функцию. WinAPI С++
Есть функция: bool IsMouse ( ) { if ( GetSystemMetrics ( SM_MOUSEPRESENT...


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

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

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