Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119

Работающая программа только нужно с ней сделать так, чтобы центры рисовались у треугольников темже цветом,что и треугольник подскажите пожалуйста

07.03.2014, 05:45. Показов 1323. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
class Shape
{
    int x,y;
  public:
    TColor color;
    Shape(int x1=random(300),
      int y1=random(250),
      TColor col=(TColor)random(0xffffff))
    {
      x=x1; y=y1;
      color=col;
    }
    virtual void Draw(TCanvas *cn)
    {
      cn->Pen->Color=color;
      cn->Ellipse(x-3,y-3,x+3,y+3);
    }
};
 
struct Points
{
  int x,y;
};
class Triangle : public Shape
{
  protected:
    Points p[3];
  public:
    Triangle(Points &p1,Points &p2,Points &p3,
          TColor col=(TColor)random(0xffffff))
    {
      p[0]=p1;
      p[1]=p2;
      p[2]=p3;
    }
    void Draw(TCanvas *cn);
};
 
void Triangle :: Draw(TCanvas *cn)
{
  int i;
  cn->Pen->Color=color;
  cn->MoveTo(p[0].x,p[0].y);
  for(i=1;i<3;i++)
  {
      cn->LineTo(p[i].x,p[i].y);
  }
  cn->LineTo(p[0].x,p[0].y);
}
Shape** sh;
 
void RandPoint(TForm *f,Points &p);
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int pn,tn,all,i;
  Canvas->Brush->Color=clWhite;
  Canvas->Pen->Color=clWhite;
  Canvas->Rectangle(0,0,ClientWidth,ClientHeight);
  Points p1,p2,p3;
  tn=Edit1->Text.ToIntDef(3);
 
  all=tn;
  sh=new Shape *[all];
  for(i=0;i<tn;i++)
  {
    RandPoint(Form1,p1);
    RandPoint(Form1,p2);
    RandPoint(Form1,p3);
    sh[i]=new Triangle(p1,p2,p3);
  }
 
  for(i=0;i<all;i++)
  {
    sh[i]->Draw(Form1->Canvas);
  }
  for(i=0;i<all;i++)
    delete sh[i];
  delete []sh;  
}
//---------------------------------------------------------------------------
void RandPoint(TForm *f,Points &p)
{
  p.x=random(f->ClientWidth);
  p.y=random(f->ClientHeight);
}
//--------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Application->Terminate();
}
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2014, 05:45
Ответы с готовыми решениями:

Подскажите пожалуйста, нужно сделать так, чтобы х было не равно нулю
Program Lab2; Const b=2.4; c=1.7; Var x, a, y: real; Begin write ('Введите значение x='); readln (x); ...

Подскажите, пожалуйста, как сделать массив так, чтобы программа не крашилась...
Всем доброго вечера. Возникла проблема связанная с тем, что при попытке заполнения массива крашиться компилятор #include...

Сделать чтобы объекты рисовались так чтобы мы могли наблюдать это
попытки были,но неудачные void Draw() { glClear(GL_COLOR_BUFFER_BIT);

4
Будущее рядом
 Аватар для TenGen
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
07.03.2014, 08:12
Coca Cola, насколько я помню, заливка фигуры определяется свойством Brush. Что то типа ch->Brush->Color = your_color;
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
11.03.2014, 11:42  [ТС]
центр имеется ввиду точка, центр треугольника каждого который рисует программа, а не закрашивание его
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
11.03.2014, 14:34
Лучший ответ Сообщение было отмечено Coca Cola как решение

Решение

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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int pn,tn,all,i;
  Canvas->Brush->Color=clWhite;
  Canvas->Pen->Color=clWhite;
  Canvas->Rectangle(0,0,ClientWidth,ClientHeight);
  Points p1,p2,p3;
  tn=Edit1->Text.ToIntDef(3);
 
  all=tn;
  sh=new Shape *[all];
 
  randomize();  // чтобы последовательность не повторялась
 
  for(i=0;i<tn;i++)
  {
    RandPoint(Form1,p1);
    RandPoint(Form1,p2);
    RandPoint(Form1,p3);
    sh[i]=new Triangle(p1,p2,p3);
 
//  точки определяем как среднее арифметическое координат, по которым строятся треугольники
//  вариант №1
    Canvas->Pixels[(p1.x+p2.x+p3.x)/3][(p1.y+p2.y+p3.y)/3] = sh[i]->color;  // точки
 
//  вариант №2
//  большие "точки"
    Canvas->Brush->Color = sh[i]->color;
    Canvas->Pen->Color = sh[i]->color;
    Canvas->Ellipse((p1.x+p2.x+p3.x)/3-2, (p1.y+p2.y+p3.y)/3-2, (p1.x+p2.x+p3.x)/3+2, (p1.y+p2.y+p3.y)/3+2);
  }
 
  for(i=0;i<all;i++)
  {
    sh[i]->Draw(Form1->Canvas);
  }
  for(i=0;i<all;i++)
    delete sh[i];
  delete []sh;
}
P.S.: заметил, что в алгоритме построения треугольников присутствует ошибка, иногда части сторон рисуются где-то в стороне, копаться не стал, исправление оставлю на твоей совести :-), см. вложение №3.
И перед random() не забывай использовать randomize(), а то последовательность треугольников может оказаться повторяющейся при каждом запуске программы (см. 13-ую строку приложенного кода).
Маленькие точки - вложение №1, большие - №2.
Миниатюры
Работающая программа только нужно с ней сделать так, чтобы центры рисовались у треугольников темже цветом,что и треугольник подскажите пожалуйста   Работающая программа только нужно с ней сделать так, чтобы центры рисовались у треугольников темже цветом,что и треугольник подскажите пожалуйста   Работающая программа только нужно с ней сделать так, чтобы центры рисовались у треугольников темже цветом,что и треугольник подскажите пожалуйста  

1
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
11.03.2014, 16:11  [ТС]
извините а куда вставить этот код??

Добавлено через 46 минут
я вот не могу со вторым вариантом разобраться...чет рне работает хотя вроде все правильно вставляю

Добавлено через 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
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"
 
class Shape
{
    int x,y;
  public:
    TColor color;
    Shape(int x1=random(300),
      int y1=random(250),
      TColor col=(TColor)random(0xffffff))
    {
      x=x1; y=y1;
      color=col;
    }
    virtual void Draw(TCanvas *cn)
    {
      cn->Pen->Color=color;
      cn->Ellipse(x-3,y-3,x+3,y+3);
    }
};
 
struct Points
{
  int x,y;
};
class Triangle : public Shape
{
  protected:
    Points p[3];
  public:
    Triangle(Points &p1,Points &p2,Points &p3,
          TColor col=(TColor)random(0xffffff))
    {
      p[0]=p1;
      p[1]=p2;
      p[2]=p3;
    }
    void Draw(TCanvas *cn);
};
 
void Triangle :: Draw(TCanvas *cn)
{
  int i;
  cn->Pen->Color=color;
  cn->MoveTo(p[0].x,p[0].y);
  for(i=1;i<3;i++)
  {
      cn->LineTo(p[i].x,p[i].y);
  }
  cn->LineTo(p[0].x,p[0].y);
}
Shape** sh;
 
void RandPoint(TForm *f,Points &p);
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int pn,tn,all,i;
 Canvas->Brush->Color=clWhite;
  Canvas->Pen->Color=clWhite;
  Canvas->Rectangle(0,0,ClientWidth,ClientHeight);
  Points p1,p2,p3;
  tn=Edit1->Text.ToIntDef(3);
 
 
  all=tn;
  sh=new Shape *[all];
   randomize();
  for(i=0;i<tn;i++)
  {
    RandPoint(Form1,p1);
    RandPoint(Form1,p2);
    RandPoint(Form1,p3);
    sh[i]=new Triangle(p1,p2,p3);
   Canvas->Brush->Color = sh[i]->color;
    Canvas->Pen->Color = sh[i]->color;
    Canvas->Ellipse((p1.x+p2.x+p3.x)/3-2, (p1.y+p2.y+p3.y)/3-2, (p1.x+p2.x+p3.x)/3+2, (p1.y+p2.y+p3.y)/3+2);
  }
 
  for(i=0;i<all;i++)
  {
    sh[i]->Draw(Form1->Canvas);
  }
  for(i=0;i<all;i++)
    delete sh[i];
  delete []sh;
}
//---------------------------------------------------------------------------
void RandPoint(TForm *f,Points &p)
{
  p.x=random(f->ClientWidth);
  p.y=random(f->ClientHeight);
}
//--------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Application->Terminate();
}
//---------------------------------------------------------------------------
Добавлено через 41 секунду
спасибо всем! вот готовая прога)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2014, 16:11
Помогаю со студенческими работами здесь

Нужно сделать так, чтобы программа запускалась только если ей передать заданный аргумент.
сразу приношу извинения, но я не нащёл подходящего раздела. суть такова. есть программа(исходников нет) нужно сделать так, чтобы она...

Подскажите пожалуйста что нужно добавить, чтобы программа работала корректно, я новичок в с++ (Метод Монте-Карло)
// ConsoleApplication1.cpp : Этот файл содержит функцию &quot;main&quot;. Здесь начинается и заканчивается выполнение программы. // задача //...

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

Как сделать так, чтобы условие начало работать?Подскажите,пожалуйста
Здравствуйте. Прошу,подскажите,пожалуйста, ступор уже. Вот прога: for(n=1;n&lt;=100;n++) do { P0=1/(exp(r,n));...

Нужно сделать так, чтобы в калькуляторе при нажатии на запятую (плавающая точка) перед ней появлялся ноль
Я сделал так, чтобы ставилось, если не было перед ней числа или действия. Типа *пустое поле*, ставлю запятую =&gt; ставится...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru