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

Сделать из консольного приложения оконное

09.11.2016, 18:31. Показов 1759. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята кто может помочь перевести с консольного в оконный.
Вот скрин оконной проги. Но кода нету.
Сделать из консольного приложения оконное

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
68
69
70
71
72
73
74
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    int *a, n;
 
    cout << "Array size : ";
    cin >> n; // Ввод размера массива
 
    a = new int[n];
 
    for(int i = 0; i < n; i++) // Заполнение массива
    {
        a[i] = rand();
    }
 
    cout << "Array : ";
    for(int i = 0; i < n; i++) // Вывод массива (для проверки)
    {
        cout << a[i] << ' ';
    }
 
    int mn = a[0], mx = a[0]; // Минимальные и максимальные элементы
 
    int i_mn = 0, i_mx = 0; // индексы минимального и аксимального элементов
 
    for(int i = 1; i < n; i++) // Поиск минимального и максимального элементов ( и их позиций )
    {
        if(a[i] > mx)
        {
            mx = a[i];
            i_mx = i;
        }
        if(a[i] < mn)
        {
            mn = a[i];
            i_mn = i;
        }
    }
 
    int left, right;
 
    int answer;
 
    if(abs(i_mn - i_mx) <= 1) // минимальный и максимальный элементы стоят вплотную, и между ними нет чисел: ответ = 0
    {
        answer = 0;
    }
    else
    {
        answer = 1;
        if(i_mn <= i_mx) // минимальный элемент стоит правее максимального
        {
            left = i_mn + 1;
            right = i_mx;
        }
        else // максимальный стоит правее минимального
        {
            left = i_mx +1;
            right = i_mn;
        }
 
        for(int i = left; i < right; i++) // находим искомое произведение
        {
            answer *= a[i];
        }
    }
 
    cout << endl << "Answer : " << answer; // выводим ответ
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2016, 18:31
Ответы с готовыми решениями:

Переделать из консольного приложения в оконное
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

Переработка консольного приложения в оконное
Пишу на с++. Хочу консольное приложение(многофайловое , модульное) в оконное &quot;трансформировать&quot;....

Как сделать оконное приложение на основе работающего консольного
Есть работающее консольное приложение. #include &lt;iostream&gt; #include &lt;windows.h&gt; int main() {...

Как из консольного приложения сделать форму?
Создал консольное приложения, как с нево зделать окно. Например создал крестики нолики, хочу...

8
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
09.11.2016, 19:28 2
Обработчики нажатия Создать и Выполнить добавил? Туда переноси создание и обработку. А сам массив объяви как поле класса формы.
0
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 65
09.11.2016, 21:11  [ТС] 3
Я ничего не добавлял, просто накидал по примеру компонентов и всё.
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
09.11.2016, 21:22 4
Значит, добавляй.
0
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 65
09.11.2016, 21:35  [ТС] 5
Что то мой обработчик на кнопку Создать, не хочет работать.
Сделать из консольного приложения оконное

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n;
n = StrToInt(Edit1->Text);
int * a = new int[n];
for(int i = 0; i < n; i++) // Заполнение массива
{
a[i] = rand();
StringGrid1->Cells[0, i]=IntToStr(a[i]);
} }
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
09.11.2016, 21:46 6
Что именно не работает? В StringGrid строки и столбцы нужно добавлять предварительно. Размер его устанавливай.
Указатель на массив (a) должен быть не локальным, а полем класса.
0
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 65
09.11.2016, 21:58  [ТС] 7
9 строка ошибку выбивает.
0
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
09.11.2016, 22:16 8
Лучший ответ Сообщение было отмечено Wodelectro как решение

Решение

ну во первых рандомайз у вас не ограничен, правильнее его пресечь в пределах разумного, напр до 100 включительно:
C++
1
a[i] = rand()%100+1;
Добавлено через 11 минут
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
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
        int *a=NULL; //указатель на массив
        int n; //размер массива
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    a = new int[n];
    for(int i = 0; i < n; i++) // Заполнение массива
    {
        a[i] = rand()%100+1;
    }
    for(int i = 0; i < n; i++) // Вывод массива (для проверки)
    {
        StringGrid1->Cells[i][0]=AnsiString(a[i]);
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int mn = a[0], mx = a[0]; // Минимальные и максимальные элементы
 
    int i_mn = 0, i_mx = 0; // индексы минимального и аксимального элементов
 
    for(int i = 1; i < n; i++) // Поиск минимального и максимального элементов ( и их позиций )
    {
        if(a[i] > mx)
        {
            mx = a[i];
            i_mx = i;
        }
        if(a[i] < mn)
        {
            mn = a[i];
            i_mn = i;
        }
    }
    Memo1->Lines->Add("min= "+AnsiString(mn));
    Memo1->Lines->Add("max= "+AnsiString(mx));
    int left, right;
 
    int answer;
 
    if(abs(i_mn - i_mx) <= 1) // минимальный и максимальный элементы стоят вплотную, и между ними нет чисел: ответ = 0
    {
        answer = 0;
        Memo1->Lines->Add("минимальный и максимальный элементы стоят вплотную!");
    }
    else
    {
        answer = 1;
        if(i_mn <= i_mx) // минимальный элемент стоит правее максимального
        {
            left = i_mn + 1;
            right = i_mx;
        }
        else // максимальный стоит правее минимального
        {
            left = i_mx +1;
            right = i_mn;
        }
 
        for(int i = left; i < right; i++) // находим искомое произведение
        {
            answer *= a[i];
        }
    }
    Memo1->Lines->Add("Ответ = "+AnsiString(answer));  // выводим ответ
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    if(Edit1->Text!="")
    {
        n=StrToInt(Edit1->Text);
        StringGrid1->ColCount=n;
        StringGrid1->Width=StringGrid1->ColWidths[0]*n;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
    if(!((Key >= '0' && Key <= '9') || Key == VK_BACK /*|| Key == DecimalSeparator /*ThousandSeparator*/)) Key = 0x00;        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
  StringGrid1->ScrollBars=ssNone;
  Memo1->Clear();        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    delete []a;         
}
//---------------------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 65
14.11.2016, 12:00  [ТС] 9
Огромнейшее тебе спасибо. Выручил конкретно.
0
14.11.2016, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2016, 12:00
Помогаю со студенческими работами здесь

Как сделать из консольного приложения apk?
Здравствуйте! Написал для себя консольную программу из трёх классов, которая выполняет некоторые...

Сделать из консольного приложения приложение с графикой
Всем привет! Помогите пожалуйста советом. У меня есть проект Win 32 Console Application,...

Реализовать оконное приложение из консольного
Здравствуйте, у меня проблема с программой. Сделать в командной строке получилось, а вот такое же в...

Переделать с консольного в оконное приложение
Добрый день, помогите сделать код под форму var r1, r2, rs : real; begin ...


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

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