Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
1

GUI через c++ builder для простого консольного приложения

20.03.2016, 04:37. Показов 1430. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть вот такая простая консольная программа,помогите запилить GUI через C++ Builder,лучше всего наверное через StrinG Grid,хотя можно и через другие объекты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <array>
 
int main()
{
  std::array<int,14> a={1,2,3,1,1,4,5,6,7,1,8,1,9,0};
  for(int i=1, cf=(a[0]==1);i<a.size();i++){
      if (cf){
          cf=(a[i]==1);
          a[i]=0;
      }
      else{
          cf=(a[i]==1);
      }
      if (cf){
          a[i-1]=0;
      }
  }
  for(auto p:a)
    std::cout<<p;
  std::cout<<std::endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2016, 04:37
Ответы с готовыми решениями:

Unit-test для простого консольного приложения
Делаю лабу, но никак не могу разобраться и сделать юнит тест для консольного приложения, которое...

GUI для консольного приложения
вопрос в передаче параметров пока это выглядит так textbox1.text+&quot; &quot;+combobox1.text+&quot; &quot;+... ...

GUI для консольного приложения
Как можно интегрировать GUI приложение на MFC и консольное приложение C++?

Написать GUI для консольного приложения
Доброго времени суток всем. Имеется консольное приложение, хочу присобачить к нему GUI, но в виде...

13
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
20.03.2016, 06:07 2
Aureal3D, а словами объяснить, что сделать надо, можно?
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
21.03.2016, 01:05  [ТС] 3
Цитата Сообщение от D1973 Посмотреть сообщение
Aureal3D, а словами объяснить, что сделать надо, можно?
Нет,я вот пытался сам сделать через объекты билдера,ничего не вышло,можно помочь сделать это с нуля или исправить то что я делал?
Вложения
Тип файла: 7z Recurs.7z (309.2 Кб, 4 просмотров)
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
21.03.2016, 17:03 4
Цитата Сообщение от Aureal3D Посмотреть сообщение
можно помочь сделать это с нуля
Можно, только надо знать, что делать!
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
22.03.2016, 00:05  [ТС] 5
Цитата Сообщение от D1973 Посмотреть сообщение
Можно, только надо знать, что делать!
Ввод массива\вывод массива через объекты c++ builder(можно через StringGrid или через любой другой объект),выполнение цикла над массивом объектом Button или любым другим объектом
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
22.03.2016, 18:56 6
Aureal3D, все равно не понял сакрального смысла твоего задания, но... какой вопрос - такой ответ!
Вот пример работы с двумерным массивом, который отображается на форме при помощи сетки строк (StringGrid)
С комментариями, я думаю, будет понятно, что она делает
Delphi
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Spin, Math;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    StringGrid1: TStringGrid;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  A : array of array of integer;
  N, M : integer;
 
implementation
 
{$R *.dfm}
 
//Создание формы
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
//Инициализация генератора случайных чисел
 Randomize;
//Установка ширины столбцов стринггрида
 for i := 0 to 9 do
  StringGrid1.ColWidths[i] := StringGrid1.RowHeights[i] * 2;
//Скрытие стринггрида
 StringGrid1.Visible := false;
end;
 
//Нажатие кнопки Выход
procedure TForm1.Button3Click(Sender: TObject);
begin
 Close;
end;
 
//нажатие кнопки "Создать"
procedure TForm1.Button1Click(Sender: TObject);
var i, j : integer;
begin
//Задание количества строк и столбцов матрицы и сетки
//в зависимости от введенных пользователем значений
 N := SpinEdit1.Value;
 M := SpinEdit2.Value;
 StringGrid1.RowCount := N;
 StringGrid1.ColCount := M;
//Отображение сетки
 StringGrid1.Visible := true;
//установка размерности динамического массива
 SetLength(A, N, M);
//Заполнение массива и сетки случайными числами от -100 до 100
 for i := 0 to N - 1 do
  for j := 0 to M - 1 do
   begin
    A[i, j] := RandomRange(-100, 100);
    StringGrid1.Cells[j, i] := IntToStr(A[i, j]);
   end;
//Доступна кнопка "Изменить"
 Button2.Enabled := true;
end;
 
//Нажатие кнопки "Изменить"
procedure TForm1.Button2Click(Sender: TObject);
var i, j : integer;
begin
//Если элемент массива > 0, он умножается на 2, иначе обнуляется
//и отображается в сетке
 for i := 0 to N - 1 do
  for j := 0 to M - 1 do
   begin
    if A[i, j] > 0 then A[i, j] := A[i, j] * 2 else A[i, j] := 0;
    StringGrid1.Cells[j, i] := IntToStr(A[i, j]);
   end;
//Недоступны кнопки "Создать" и "Изменить"
 Button1.Enabled := false;
 Button2.Enabled := false;
//Доступна кнопка "Заново"
 Button4.Enabled := true;
end;
 
//Нажатие кнопки "Заново"
procedure TForm1.Button4Click(Sender: TObject);
var i : integer;
begin
//Очищаем и скрываем сетку
 for i := 0 to N - 1 do
  StringGrid1.Rows[i].Clear;
 StringGrid1.Visible := false;
//Доступна кнопка "Создать"
 Button1.Enabled := true;
//Недоступны кнопки "Заново" и "Изменить"
 Button4.Enabled := false;
//Значения количества строк и столбцов установлены по умолчанию
 SpinEdit1.Value := 5;
 SpinEdit2.Value := 5;
end;
 
end.
Миниатюры
GUI через c++ builder для простого консольного приложения  
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
22.03.2016, 19:37 7
Во, блин, я тупанул...
Сидел смотрел тему дельфи , потом на автомате тебе там пример и набросал... Ладно, сейчас переделаю...
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
22.03.2016, 19:39 8
Вот держи...
Вложения
Тип файла: rar 4.rar (357.8 Кб, 9 просмотров)
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
23.03.2016, 10:13  [ТС] 9
Цитата Сообщение от D1973 Посмотреть сообщение
Вот держи...
Спасибо большое,изначально консольная программа выше удаляет все числа граничащие с "1",не могу понять что делать с #include <array> и std::array<int,14> a={1,2,3,1,1,4,5,6,7,1,8,1,9,0}; в билдере

Добавлено через 12 часов 44 минуты
Т.е. тут через рекурсию заменяются числа граничащие с 1 на нули,как переписать этот код что его билдер выполнять мог?
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
23.03.2016, 11:23 10
Цитата Сообщение от D1973 Посмотреть сообщение
надо знать, что делать!
Вот это я спрашивал, что надо делать... Неужели сразу нельзя было вот так вот и ответить, а то нагородил черт знает что...
Т.е. из массива a={1,2,3,1,1,4,5,6,7,1,8,1,9,0} должен получиться массив a={1,0,0,1,1,0,5,6,0,1,0,1,0,0} так что-ли?
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
28.03.2016, 11:47  [ТС] 11
Цитата Сообщение от D1973 Посмотреть сообщение
Вот это я спрашивал, что надо делать... Неужели сразу нельзя было вот так вот и ответить, а то нагородил черт знает что...
Т.е. из массива a={1,2,3,1,1,4,5,6,7,1,8,1,9,0} должен получиться массив a={1,0,0,1,1,0,5,6,0,1,0,1,0,0} так что-ли?
Да,спасибо большое.

Добавлено через 19 часов 17 минут
Как записать массив через объекты билдера?
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
28.03.2016, 15:51 12
Вот так как-то
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int A[14] = {1, 2, 3, 1, 1, 4, 5, 6, 7, 1, 8, 1, 9, 0};
  for(int i = 0; i < 14; i++)
   {
     StringGrid1->Cells[i][0] = IntToStr(A[i]);
     if((A[i] != 1) && (A[i - 1] == 1 || A[i + 1] == 1)) A[i] = 0;
     StringGrid2->Cells[i][0] = IntToStr(A[i]);
   }
}
Миниатюры
GUI через c++ builder для простого консольного приложения  
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,813
Записей в блоге: 3
28.03.2016, 16:20 13
В общем случае можно предоставить самому пользователю выбор размерности массива, заполнить случайным образом и обработать так же, как и раньше:
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
#include <Math.hpp>
...
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int N = CSpinEdit1->Value;
  int *A = new int[N];
  for(int i = 0; i < N; i++)
   A[i] = RandomRange(1, 9);
  for(int i = 0; i < N; i++)
   {
      StringGrid1->Cells[i][0] = IntToStr(A[i]);
      if((A[i] != 1) && ((A[i - 1] == 1) || (A[i + 1] == 1))) A[i] = 0;
      StringGrid2->Cells[i][0] = IntToStr(A[i]);
   }
  delete [] A;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
  StringGrid1->Rows[0]->Clear();
  StringGrid2->Rows[0]->Clear();
  StringGrid1->ColCount = CSpinEdit1->Value;
  StringGrid2->ColCount = CSpinEdit1->Value;
}
Миниатюры
GUI через c++ builder для простого консольного приложения  
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 37
30.03.2016, 02:52  [ТС] 14
Благодарю,скрины только ты скинул,а прогу сорсы нет
Что я не так делаю?
Поробовал поменять своими силами и у она меня через раз массив меняет.
Вложения
Тип файла: 7z program.7z (333.0 Кб, 4 просмотров)
0
30.03.2016, 02:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2016, 02:52
Помогаю со студенческими работами здесь

Создание GUI для консольного приложения на C++
Я хотел создать GUI для консольного приложения на C++. Но возникла одна проблема - передавать...

Linux GUI для консольного приложения iwlist
Помогите разобраться. Задача такова. хочу написать программу которая бы результат работы iwlist...

GUI для консольного приложения. Получить состояние ожидания ввода
Доброго времени суток. В общем ситуация следующая. Пишу GUI для внутри-офисной консольной тулзы, и...

Создание простого консольного ООП-приложения любой тематики
Всем привет, нужна помощь в создании простого консольного приложения. Вот несколько условий: 1....


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru