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

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

Восстановить пароль Регистрация
 
skv1d
 Аватар для skv1d
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 15:39     При нажатии кнопки создать массив с размерностью, указанной в Textbox #1
Задача такая:
при нажатии кнопки должен создаться массив у которого размер записывается из 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 и на другие массивы тоже)
не могу придумать как решить эту проблему.

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 15:39     При нажатии кнопки создать массив с размерностью, указанной в Textbox
Посмотрите здесь:

как создать динамический массив размерностью m на n? C++
C++ При нажатии на textbox-ы программа закрывается
Изменение положения формы при нажатии кнопки C++
Открытие указанной папки при нажатии на кнопку C++
Есть динамический массив с размерностью 5, необходимо его сделать с размерностью 6, заполнить цифрами и вывести на экран C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 15:40     При нажатии кнопки создать массив с размерностью, указанной в Textbox #2
operator new и
operator delete
тебе помогут :-)
skv1d
 Аватар для skv1d
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 15:51  [ТС]     При нажатии кнопки создать массив с размерностью, указанной в Textbox #3
а можете привести пример использования new и delete?

Добавлено через 4 минуты
а также я не понимаю почему он выдаёт ошибку.
ведь значения i и b неизменны.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 15:55     При нажатии кнопки создать массив с размерностью, указанной в Textbox #4
Как же они неизменны то могут быть? :-)
skv1d
 Аватар для skv1d
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:25  [ТС]     При нажатии кнопки создать массив с размерностью, указанной в Textbox #5
но ведь они объявлены как static и поэтому как я понимаю,объявляются они только один раз.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 16:38     При нажатии кнопки создать массив с размерностью, указанной в Textbox #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).
skv1d
 Аватар для skv1d
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:59  [ТС]     При нажатии кнопки создать массив с размерностью, указанной в Textbox #7
я непонимаю как работать с new, можете указать какой нибудь источник чтоб прочитать.
и во вторых я также непонимаю почему когда я эту же программу писал для консоли таких ошибок не было???там также размер массива вводился пользователем.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
30.10.2012, 19:17     При нажатии кнопки создать массив с размерностью, указанной в Textbox #8
Цитата Сообщение от skv1d Посмотреть сообщение
можете указать какой нибудь источник чтоб прочитать
в любой нормальной книге по с++
skv1d
 Аватар для skv1d
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 19:45  [ТС]     При нажатии кнопки создать массив с размерностью, указанной в Textbox #9
можете тогда ответить и на этот вопрос?
Цитата Сообщение от skv1d Посмотреть сообщение
почему когда я эту же программу писал для консоли таких ошибок не было???
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
30.10.2012, 22:25     При нажатии кнопки создать массив с размерностью, указанной в Textbox #10
Может на другом компиляторе делали?
Так как нормальный компилятор на пропустит код
C++
1
2
int a;
int b[a];
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
30.10.2012, 22:40     При нажатии кнопки создать массив с размерностью, указанной в Textbox #11
Croessmah, gcc хавает вроде такое)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
30.10.2012, 23:44     При нажатии кнопки создать массив с размерностью, указанной в Textbox #12
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Croessmah, gcc хавает вроде такое)
В GCC используются массивы переменной длины(AVL).
Укажите GCC ключ -pedantic для того, чтобы потребовать от компилятора соблюдения стандарта и такой код не скомпилируется.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:09     При нажатии кнопки создать массив с размерностью, указанной в Textbox #13
Это происки C, C++ тут непричем.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 00:18     При нажатии кнопки создать массив с размерностью, указанной в Textbox #14
Цитата Сообщение от Герц Посмотреть сообщение
Это происки C, C++ тут непричем.
В каком смысле?
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:20     При нажатии кнопки создать массив с размерностью, указанной в Textbox #15
Объявление массивов переменной длины в стиле обычных автоматических массивов - это фишка C, в C++ такого нет.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 00:23     При нажатии кнопки создать массив с размерностью, указанной в Textbox #16
Как видите, прекрасно компилируется как в gcc, так и в g++
При нажатии кнопки создать массив с размерностью, указанной в Textbox
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:57     При нажатии кнопки создать массив с размерностью, указанной в Textbox #17
Читать, стало быть, не умеем?
ISO C++ запрещает массив переменного размера
Вы компилируете не в соответствии со стандартом C++.

Да и вообще, gcc и g++ это всего лишь алиасы, вызывающие одно и то же приложение, оба могут компилировать и C, и C++. Добавь флаг --std=c++0x например и врядли оно скомпилируется.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 03:04     При нажатии кнопки создать массив с размерностью, указанной в Textbox #18
Цитата Сообщение от Герц Посмотреть сообщение
это фишка C
Я согласен, что она появилась раньше в C, но до ISO C99 присутствовала только как дополнение.
Так же и теперь оно идет как расширение GNU g++
Цитата Сообщение от Герц Посмотреть сообщение
--std=c++0x например и врядли оно скомпилируется.
Кушает без проблем и ругательств.

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

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

Есть какие нибудь другие варианты?????????????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 18:42     При нажатии кнопки создать массив с размерностью, указанной в Textbox
Еще ссылки по теме:

C++ Пятнашки. При нажатии кнопки влево выводит ошибку
C++ Обращение к файлу при нажатии кнопки
C++ Создать массив R, элементы которого вычисляются по указанной формуле

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

Или воспользуйтесь поиском по форуму:
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
02.11.2012, 18:42     При нажатии кнопки создать массив с размерностью, указанной в Textbox #20
skv1d, Телепаты ссобщили что похоже ТС нужен динамической массив!
смотреть в гугле malloc, calloc,realloc,free,new,delete
Yandex
Объявления
02.11.2012, 18:42     При нажатии кнопки создать массив с размерностью, указанной в Textbox
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru