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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NelliRomans
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 29
#1

Этот код написан на С++ или Delphi? - C++

08.11.2015, 20:32. Просмотров 187. Ответов 9
Метки нет (Все метки)

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
byte MatrSmeg [100][100]; // матрица смежности вершин
int Col_Verh = 3;  // Колличество вершин
TColor ColorArray[15];
TPoint Verh [100];  // Координаты вершин на поле
TColor VerhC [100];
int select = -1;  // номер выделеннолй вершины
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void PaintVerh()  // раскраска графа
{
 bool okrV = true;
 int Vindex = 0;
 int colorIndex = 0;
 while (okrV)
 {
  if (VerhC[Vindex] == clGreen)
  {
   VerhC[Vindex] = ColorArray[colorIndex];
   for (int i =0; i<Col_Verh; i++)
    if (MatrSmeg[Vindex][i] == 0)
     if (Vindex  < i)
      {
         bool r =true;
         for (int k =0; k<Col_Verh; k++)
            if ((MatrSmeg[i][k] == 1)&&(VerhC[k] == ColorArray[colorIndex]))
              r = false;
 
          if (r)
           VerhC[i] = ColorArray[colorIndex];
      }
     colorIndex++;
    }
    else
      Vindex++;
 
  okrV = false;
  for (int i = 0; i<Col_Verh; i++)
     if (VerhC[i] == clGreen)
         okrV =true;
  }
  ShowMessage("Потребовалось "+IntToStr(colorIndex)+" цветов");
}
//---------------------------------------------------------------------------
void Random_Generate_V()   // подпрограмма в случайном порядке определяет
{                          // координаты вершин
  Randomize;
  for (int i = 0; i<Col_Verh; i++)
  {
    int x = 50 + random(Form1->PaintBox1->Width - 50);   // генерация координат
    int y = 50 + random(Form1->PaintBox1->Height - 50);
     Verh[i].x = x;      // присвоение координат
     Verh[i].y = y;
  }
}
//---------------------------------------------------------------------------
void Random_Generate()  // Подпрограмма генерирует матрицу смежности вершин графа
{
 Randomize;
 Randomize;
 Randomize;
 int CountR = random(Col_Verh*(Col_Verh/3)); // генерация колличества ребер
 
 for (int i = 0; i<CountR; i++)
   {
      int x = random(Col_Verh);  // генерация позиции ребра
      int y = random(Col_Verh);
      if (x != y)
      {
      MatrSmeg[x][y] = 1;       // занесение ребра в матрицу смежности
      MatrSmeg[y][x] = 1;
      Form1->StringGrid1->Cells[x][y] = "1";
      Form1->StringGrid1->Cells[y][x] = "1";
      }
   }
}
//---------------------------------------------------------------------------
void PaintGraf()  //Подпрограмма прорисовывает граф на форме
{
Form1->PaintBox1->Canvas->Brush->Color =clCream;
Form1->PaintBox1->Canvas->Rectangle(0,0,Form1->PaintBox1->Width,Form1->PaintBox1->Height);
  for (int i =0; i< Col_Verh; i++)
   for (int j =0; j< Col_Verh; j++)
     if (MatrSmeg[i][j] == 1)
     {
        Form1->PaintBox1->Canvas->MoveTo(Verh[i].x,Verh[i].y);
        Form1->PaintBox1->Canvas->LineTo(Verh[j].x,Verh[j].y);
     }
 
 Form1->PaintBox1->Canvas->Pen->Width = 1;
 Form1->PaintBox1->Canvas->Pen->Color = clBlack;    
 
 Form1->PaintBox1->Canvas->Brush->Color = clGreen;
 
 for (int i =0; i< Col_Verh; i++)
 {
    Form1->PaintBox1->Canvas->Brush->Color = VerhC[i];
    Form1->PaintBox1->Canvas->Ellipse(Verh[i].x-10,Verh[i].y-10,Verh[i].x+10,Verh[i].y+10);
    if(i<10) Form1->PaintBox1->Canvas->TextOutA(Verh[i].x-4,Verh[i].y-7,IntToStr(i+1));
    else Form1->PaintBox1->Canvas->TextOutA(Verh[i].x-6,Verh[i].y-7,IntToStr(i+1));
 }
    if (select != -1)
      {
         Form1->PaintBox1->Canvas->Brush->Color = clYellow;
         Form1->PaintBox1->Canvas->Ellipse(Verh[select].x-10,Verh[select].y-10,Verh[select].x+10,Verh[select].y+10);
      }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
   PaintGraf();
}
//---------------------------------------------------------------------------
// обработка нажатия клавиши мыши, изменение позиции вершин
void __fastcall TForm1::PaintBox1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (select == -1)  // если нет выделенных вершин и произведен щелчек
{
   for (int i =0; i<Col_Verh; i++)  // по координатам курсора во время щелчка определяем
    if ((Verh[i].x-10 < X)&&(Verh[i].y-10 < Y)&&  //надо ли  выделять вершину
    (Verh[i].x+10 > X)&&(Verh[i].y+10 > Y))
     {
        select = i;              //если да то выделяем вершину
     }
} else {
  Verh[select].x = X;     // если вершина выделенна и произведен щелчек
  Verh[select].y = Y;     // перемещаем на эту вершину на то место на форме геде был произведен щелчек
  select = -1;
}
PaintGraf();
}
//---------------------------------------------------------------------------
// изменение размеров формы
void __fastcall TForm1::FormResize(TObject *Sender)
{
 Random_Generate_V();  
}
//---------------------------------------------------------------------------
// кнопка «Генерация»
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Random_Generate();
  PaintGraf();
}
//---------------------------------------------------------------------------
// определяет количество вершин
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
  Col_Verh = CSpinEdit1->Value;
  StringGrid1->RowCount = Col_Verh;
  StringGrid1->ColCount = Col_Verh;
   Random_Generate_V();
  for (int  i = 0; i<Col_Verh; i++)
  for (int  j = 0; j<Col_Verh; j++)
  {
     StringGrid1->Cells[i][j] = "0";
     MatrSmeg[i][j] = 0;
  }
  for (int  i =0;i<Col_Verh; i++)
     VerhC[i] = clGreen;
  PaintGraf();
}
//---------------------------------------------------------------------------
// добавление/удаление ребер в StringGrid
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
  if (ACol == ARow)
     return;
 
   if (StringGrid1->Cells[ACol][ARow] == "0")
   {
       StringGrid1->Cells[ACol][ARow] = "1";
       StringGrid1->Cells[ARow][ACol] = "1";
       MatrSmeg[ACol][ARow] = 1;
       MatrSmeg[ARow][ACol] = 1;
   }
   else
   {
    StringGrid1->Cells[ACol][ARow] = "0";
    StringGrid1->Cells[ARow][ACol] = "0";
    MatrSmeg[ACol][ARow] = 0;
    MatrSmeg[ARow][ACol] = 0;
    }
 
   PaintGraf();
}
//---------------------------------------------------------------------------
//создание формы
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    for (int  i =0;i<Col_Verh; i++)
     VerhC[i] = clGreen;
//заносим цвета в массив
     ColorArray[0] = clRed;
     ColorArray[1] = clBlue;
     ColorArray[2] = clLime;
     ColorArray[3] = clPurple;
     ColorArray[4] = clTeal;
     ColorArray[5] = clOlive;
     ColorArray[6] = clNavy;
     ColorArray[7] = clMoneyGreen;
     ColorArray[8] = clMaroon;
     ColorArray[9] = clAqua;
     ColorArray[10] = clSilver;
     ColorArray[11] = clFuchsia;
     ColorArray[12] = clSkyBlue;
     ColorArray[13] = clSkyBlue;
     ColorArray[14] = clWhite;
}
//---------------------------------------------------------------------------
//   кнопка «раскрасить»
void __fastcall TForm1::Button2Click(TObject *Sender)
{
for (int  i =0;i<Col_Verh; i++)
     VerhC[i] = clGreen;
PaintVerh();
PaintGraf();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2015, 20:32     Этот код написан на С++ или Delphi?
Посмотрите здесь:

правильно ли написан код в с++? C++
Написан код который выводит матрицу .Нужно протранспонировать ее C++
Код написан,нужна небольшая корректировка.Массивы C++
Код написан,нужна небольшая корректировка.Массивы C++
Односвязный список (псевдокод) - поменять два элемента местами (посмотреть, правильно ли написан код) C++
Что означает этот код C++
Неправильно написан код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
08.11.2015, 20:33     Этот код написан на С++ или Delphi? #2
с++
Если даже в вики глянуть, то сразу видно что синтаксис даже не подобен
Новичок
Модератор
1181 / 752 / 159
Регистрация: 17.07.2012
Сообщений: 4,131
Записей в блоге: 1
Завершенные тесты: 2
08.11.2015, 20:34     Этот код написан на С++ или Delphi? #3
C++, написано в C++Builder.
NelliRomans
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 29
08.11.2015, 20:50  [ТС]     Этот код написан на С++ или Delphi? #4
А может ли кто-нибудь проверить работает ли эта программа?
zss
Модератор
Эксперт С++
6193 / 5796 / 1877
Регистрация: 18.12.2011
Сообщений: 14,809
Завершенные тесты: 1
08.11.2015, 20:51     Этот код написан на С++ или Delphi? #5
Меня смущает вот это:
Цитата Сообщение от NelliRomans Посмотреть сообщение
Randomize;
Randomize;
Randomize;
Оно не соответствует синтаксису Си

Добавлено через 1 минуту
Цитата Сообщение от NelliRomans Посмотреть сообщение
#include <vcl.h>
Это Borland
gru74ik
Модератор
Эксперт CЭксперт С++
3894 / 1652 / 188
Регистрация: 20.02.2013
Сообщений: 4,707
Записей в блоге: 21
08.11.2015, 20:54     Этот код написан на С++ или Delphi? #6
Цитата Сообщение от zss Посмотреть сообщение
Это Borland
То есть, диалект С++, который в некоторых моментах отличается от стандартного С++. Про него лучше вопросы задавать в профильном разделе.
Tulosba
:)
Эксперт С++
4387 / 3230 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.11.2015, 20:54     Этот код написан на С++ или Delphi? #7
Цитата Сообщение от NelliRomans Посмотреть сообщение
А может ли кто-нибудь проверить работает ли эта программа?
Чтобы это проверять надо проект, а не нарезку из файлов.
Новичок
Модератор
1181 / 752 / 159
Регистрация: 17.07.2012
Сообщений: 4,131
Записей в блоге: 1
Завершенные тесты: 2
08.11.2015, 21:49     Этот код написан на С++ или Delphi? #8
Цитата Сообщение от zss Посмотреть сообщение
Меня смущает вот это:
С++Builder это по сути смесь Delphi и C++. А в Delphi для инициализации генератора случайных чисел используется процедура Randomize.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22494 / 14671 / 4180
Регистрация: 22.10.2011
Сообщений: 25,988
Записей в блоге: 4
08.11.2015, 21:54     Этот код написан на С++ или Delphi? #9
Новичок, Все равно, этот код компилироваться в Билдере не будет. Смесь смесью, но и у Дельфи и у С++ есть свой синтаксис.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 21:59     Этот код написан на С++ или Delphi?
Еще ссылки по теме:

Правильно ли написан код C++
C++ В заданной последовательности найти минимум из чисел lg(х), не используя массив (верно ли написан код?)
Код написан , требуется ваш опыт и зоркий глаз , vs кричит об ошибках C++
C++ Насколько плохо написан код?
C++ Можете сказать, на каком языке написан данный код

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

Или воспользуйтесь поиском по форуму:
Новичок
Модератор
1181 / 752 / 159
Регистрация: 17.07.2012
Сообщений: 4,131
Записей в блоге: 1
Завершенные тесты: 2
08.11.2015, 21:59     Этот код написан на С++ или Delphi? #10
volvo, а ну да, как-то я не подумал, правильно Randomize().
Yandex
Объявления
08.11.2015, 21:59     Этот код написан на С++ или Delphi?
Ответ Создать тему
Опции темы

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