Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 4

Как по нажатию 2-ой Button выполнить часть программы

19.02.2012, 17:21. Показов 977. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Нужна помощь опытных людей.

Есть программа, примерно такая
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i;                                          // Объявление переменных
 float a, b, c, S;
 randomize();                                    // Рандомизация генератора
 
 a=random(500.)/100.;                            // Значения переменных
 b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
}
Я хочу по нажатию Button2 выполнить часть программы
C++
1
2
3
4
5
6
7
8
9
10
b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
}
Т.е. мне надо, чтобы часть переменных со случайным значением не менялась, а остальные менялись.
Я пробовала делать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i;                                          // Объявление переменных
 float a, b, c, S;
 randomize();                                    // Рандомизация генератора
 
 a=random(500.)/100.;                            // Значения переменных
 
 loop:
 b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
 
 if (Button2->OnClick)
 {
  goto loop;
 }
 }
ничего не меняется.
А если так,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i;                                          // Объявление переменных
 float a, b, c, S;
 randomize();                                    // Рандомизация генератора
 
 a=random(500.)/100.;                            // Значения переменных
 
 loop:
 b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 goto loop;
}
то не определена метка loop.
Подскажите, пожалуйста, что я не так делаю. Или как можно реализовать по-другому.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2012, 17:21
Ответы с готовыми решениями:

По нажатию Ctrl+А завершить работу программы и выполнить команду dir
Помогите пожалуйста, написать программу на Turbo Assembler которая после нажатия + завершить работу программы и выполнить команду DOS :...

Как заставить работать FilterRecord по нажатию Button?
Есть процедура procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept := (DataSet >...

Как мне вытащить значение из (HTML table) по нажатию на button
Есть в aspx вот это: <asp:Table ID="FindCompanyTable" runat="server" style="width:100%; height:100%"></asp:Table> Я заполняю...

4
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
19.02.2012, 21:03
А давайте создадим функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 void Randomize(int mode)
{
int i;  
 static float a;                                                // Объявление переменных
 float  b, c, S;
 randomize();                                        // Рандомизация генератора
 
if(mode == 0)
 { 
 a=random(500.)/100.;                                    // Значения переменных
 }
 
 b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений      А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
}
Теперь если Вы, вызовите функцию с параметром ноль, то отрандомяться все переменные.
Если вызовете с параметром отличным от нуля, то все кроме переменной "а" и в "а" будет предыдущие значение.

ИМХО:Забудьте пока о Goto

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 loop:
 b=StrToFloat(Edit1->Text);
 c=random(300.)/100.;
 
 Label6->Caption=FloatToStrF(a,ffGeneral,4,2);   // Вывод значений      А и С
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);
 
 S=a+b+c;                                        // Сумма А, В и С
 
 Label4->Caption=FloatToStrF(S,ffGeneral,4,2);   // Вывод результата
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 goto loop;
}
а я считал себя извращенцем.
1
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 4
19.02.2012, 22:09  [ТС]
Очень интересный вариант. Спасибо. Попробую
0
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 4
22.02.2012, 21:53  [ТС]
У меня опять небольшая проблема: а что если мне нужно сделать статичным (как тут)
C++
1
static float a;
динамический массив, наподобие
C++
1
2
3
4
5
float **mass1 = new float *[2];              // Объявление массива
 for (int i = 0; i < 2; i++)
 {
  mass1[i]= new float [N_m];
 }
Понимаю, что это бред "статический динамический массив", но все же я в растерянности.
0
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 4
25.02.2012, 17:42  [ТС]
В общем текст программы получился вот таким
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i, N;                                       // Объявление переменных
 float b, c;
 randomize();                                    // Рандомизация генератора
 
 N= StrToInt(Edit2->Text);
 
  float **a = new float *[1];                     // Объявление массива
  for (int i = 0; i < 2; i++)
  {
   a[i]= new float [N];                           // Значения переменных
  }
 
 float **S = new float *[1];                     // Объявление массива
 for (i = 0; i < 2; i++)
 {
  S[i]= new float [N];                           // Значения переменных
 }
 if (CheckBox1->Checked)
 {
  for (i = 0; i < N; i++)
  {
   a[0][i]=random(500.)/100.;
  }
 }
 StringGrid1->RowCount= N+1;                     // Определение полей таблицы
 for (i=1; i<= N; i++)
  {
   StringGrid1->Cells[0][i]= IntToStr(i);
  }
 StringGrid1->Cells[0][0]= "№";
 StringGrid1->Cells[1][0]= "A";
 
 for (i = 1; i <= N; i++)                        // Вывод A таблицу
  {
   StringGrid1->Cells[1][i]= FloatToStrF(a[0][i-1],ffGeneral,4,2);
  }
 
  b= StrToFloat(Edit1->Text);
  c= random(300.)/100.;
 
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);  // Вывод значений  А и С
 
 for (i = 0; i < N; i++)                        // Сумма А, В и С
 {
  S[0][i]= a[0][i]+b+c;
 }
 
 StringGrid2->RowCount= N+1;                    // Определение полей таблицы
 for (i = 1; i <= N; i++)
  {
   StringGrid2->Cells[0][i]= IntToStr(i);
  }
 StringGrid2->Cells[0][0]= "№";
 StringGrid2->Cells[1][0]= "Sum";
 
 for (i = 1; i <= N; i++)                       // Вывод результата
  {
   StringGrid2->Cells[1][i]= FloatToStrF(S[0][i-1],ffGeneral,4,2);
  }
 
}
Как сделать, чтобы массив "а" не обнулялся после каждого нажатия кнопки когда не выполняется условие if (CheckBox1->Checked), а в нем сохранялось предыдущее значение?

Добавлено через 22 часа 29 минут
Проблему вроде решила, правда, извращенным способом, но вдруг кому пригодится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{
 int i, N;                                       // Объявление переменных
 float b, c;
 
 randomize();                                    // Рандомизация генератора
 N= StrToInt(Edit2->Text);
 
 float **a = new float *[1];                     // Объявление массива
 for (i = 0; i < 1; i++)
 {
  a[i]= new float [N];
 }
 
 float **S = new float *[1];                     // Объявление массива
 for (i = 0; i < 1; i++)
 {
  S[i]= new float [N];
 }
 
 if (CheckBox1->Checked)
 {
  for (i = 0; i < N; i++)
  {
   a[0][i]=random(500.)/100.;
  }
  for (i = 1; i <= N; i++)                        // Вывод A таблицу
  {
   StringGrid1->Cells[1][i]= FloatToStrF(a[0][i-1],ffGeneral,4,2);
  }
 }
 
 StringGrid1->RowCount= N+1;                     // Определение полей таблицы
 for (i=1; i<= N; i++)
  {
   StringGrid1->Cells[0][i]= IntToStr(i);
  }
 StringGrid1->Cells[0][0]= "№";
 StringGrid1->Cells[1][0]= "A";
 
  for (i = 1; i <= N; i++)                        // Вывод A из таблицы
  {
   a[0][i-1]=StrToFloat(StringGrid1->Cells[1][i]);
  }
 
  b= StrToFloat(Edit1->Text);
  c= random(300.)/100.;
 
 Label7->Caption=FloatToStrF(c,ffGeneral,4,2);  // Вывод значений  А и С
 
 for (i = 0; i < N; i++)                        // Сумма А, В и С
 {
  S[0][i]= a[0][i]+b+c;
 }
 
 StringGrid2->RowCount= N+1;                    // Определение полей таблицы
 for (i = 1; i <= N; i++)
  {
   StringGrid2->Cells[0][i]= IntToStr(i);
  }
 StringGrid2->Cells[0][0]= "№";
 StringGrid2->Cells[1][0]= "Sum";
 
 for (i = 1; i <= N; i++)                       // Вывод результата
  {
   StringGrid2->Cells[1][i]= FloatToStrF(S[0][i-1],ffGeneral,4,2);
  }
}
Вкратце: в if'е рандомизирую массив "а" и вывожу в таблицу, а уже за ним считываю обратно в массив из таблицы, т.к. она, в отличие от массива, не обнуляет данные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2012, 17:42
Помогаю со студенческими работами здесь

Как создать глобальную коллекцию и вбивать значение по нажатию Button
Привет, форумчане. Столкнулся с непониманием. Есть struct Car и в ней соответственно есть 3 поля. (string model, string weight,...

Как сделать чтобы по нажатию на Button в ListBox заносилось указанное значение
Всем привет! Подскажите как сделать чтобы по нажатию на button в listbox заносилось значение например &quot;вы нажали на button&quot;

Как выполнить действие по нажатию кнопки?
Это возможно? При нажатии на кнопку нужно выполнить: public void CreateUserAccount(string login, string password, string...

Как выполнить код по нажатию клавиши
Как я понял, в XNA нету обработчика события нажатия клавиши, а задача в том чтобы заданый код выполнялся один раз при нажатии клавиши. ...

Если Button 1 и Button 2 нажаты - Button 3 стала активной, как?
Проверка если Button 1 и Button 2 нажаты - Button 3 стала активной Причем нужно чтобы это срабатывало только после того как вторая...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru