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

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

30.10.2012, 15:39. Показов 1633. Ответов 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 и на другие массивы тоже)
не могу придумать как решить эту проблему.

Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2012, 15:39
Ответы с готовыми решениями:

При повторном нажатии кнопки значение textbox использует предыдущее
Добрый день, у меня кнопачка записывает в файл значение текстбокса, только вот при повторном...

Перевод курсора на новую строку в TextBox при нажатии кнопки
здравствуйте! есть такой вопрос - как сделать автоперенос курсора после нажатия на кнопку "ок"?...

Заполнение TextBox-а данными только при первом нажатии кнопки
мне надо чтобы я нажал на кнопку и textBox5 заполнился только один раз, в случае если нажимаю...

Как при нажатии кнопки отчистить все TextBox, comboBox3, dateTimePicker?
Здравствуйте, подскажите как сделать чтоб по нажатии кнопки отчищались все TextBox, comboBox3,...

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

Добавлено через 4 минуты
а также я не понимаю почему он выдаёт ошибку.
ведь значения i и b неизменны.
0
526 / 343 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.10.2012, 15:55 4
Как же они неизменны то могут быть? :-)
0
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:25  [ТС] 5
но ведь они объявлены как static и поэтому как я понимаю,объявляются они только один раз.
0
526 / 343 / 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
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 16:59  [ТС] 7
я непонимаю как работать с new, можете указать какой нибудь источник чтоб прочитать.
и во вторых я также непонимаю почему когда я эту же программу писал для консоли таких ошибок не было???там также размер массива вводился пользователем.
0
480 / 472 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
30.10.2012, 19:17 8
Цитата Сообщение от skv1d Посмотреть сообщение
можете указать какой нибудь источник чтоб прочитать
в любой нормальной книге по с++
0
0 / 0 / 1
Регистрация: 17.10.2012
Сообщений: 26
30.10.2012, 19:45  [ТС] 9
можете тогда ответить и на этот вопрос?
Цитата Сообщение от skv1d Посмотреть сообщение
почему когда я эту же программу писал для консоли таких ошибок не было???
0
Don't worry, be happy
17213 / 10088 / 1948
Регистрация: 27.09.2012
Сообщений: 25,183
Записей в блоге: 1
30.10.2012, 22:25 10
Может на другом компиляторе делали?
Так как нормальный компилятор на пропустит код
C++
1
2
int a;
int b[a];
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
30.10.2012, 22:40 11
Croessmah, gcc хавает вроде такое)
0
Don't worry, be happy
17213 / 10088 / 1948
Регистрация: 27.09.2012
Сообщений: 25,183
Записей в блоге: 1
30.10.2012, 23:44 12
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Croessmah, gcc хавает вроде такое)
В GCC используются массивы переменной длины(AVL).
Укажите GCC ключ -pedantic для того, чтобы потребовать от компилятора соблюдения стандарта и такой код не скомпилируется.
0
526 / 343 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:09 13
Это происки C, C++ тут непричем.
0
Don't worry, be happy
17213 / 10088 / 1948
Регистрация: 27.09.2012
Сообщений: 25,183
Записей в блоге: 1
31.10.2012, 00:18 14
Цитата Сообщение от Герц Посмотреть сообщение
Это происки C, C++ тут непричем.
В каком смысле?
0
526 / 343 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:20 15
Объявление массивов переменной длины в стиле обычных автоматических массивов - это фишка C, в C++ такого нет.
0
Don't worry, be happy
17213 / 10088 / 1948
Регистрация: 27.09.2012
Сообщений: 25,183
Записей в блоге: 1
31.10.2012, 00:23 16
Как видите, прекрасно компилируется как в gcc, так и в g++
При нажатии кнопки создать массив с размерностью, указанной в Textbox
0
526 / 343 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.10.2012, 00:57 17
Читать, стало быть, не умеем?
ISO C++ запрещает массив переменного размера
Вы компилируете не в соответствии со стандартом C++.

Да и вообще, gcc и g++ это всего лишь алиасы, вызывающие одно и то же приложение, оба могут компилировать и C, и C++. Добавь флаг --std=c++0x например и врядли оно скомпилируется.
0
Don't worry, be happy
17213 / 10088 / 1948
Регистрация: 27.09.2012
Сообщений: 25,183
Записей в блоге: 1
31.10.2012, 03:04 18
Цитата Сообщение от Герц Посмотреть сообщение
это фишка C
Я согласен, что она появилась раньше в C, но до ISO C99 присутствовала только как дополнение.
Так же и теперь оно идет как расширение GNU g++
Цитата Сообщение от Герц Посмотреть сообщение
--std=c++0x например и врядли оно скомпилируется.
Кушает без проблем и ругательств.

ИМХО, такие массивы только проблем придают.
0
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
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
02.11.2012, 18:42 20
skv1d, Телепаты ссобщили что похоже ТС нужен динамической массив!
смотреть в гугле malloc, calloc,realloc,free,new,delete
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2012, 18:42

Можно ли создать ProgressBar при нажатии кнопки?
Можно ли создать progressbar при нажатии кнопки? То есть нажал на кнопку создался один, нажал еще...

Нужно создать массив по нажатию кнопки и вывести его в TextBox
Нужно создать массив по нажатию кнопки и вывести его в TextBox. Вот что я написал: Public Sub...

Нужно создать кнопку при нажатии кнопки на форме
public partial class MainWindow : Window { public MainWindow() { ...

Создать процедуру, запускаемую при нажатии кнопки на форме
Ребята помогите пожалуйста : 1.создать процедуру, запускаемую при нажатии кнопки на форме и...


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

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

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