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

Рекурсивная функция рисования кривой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация одно-х списков классами http://www.cyberforum.ru/cpp-beginners/thread1108460.html
Добрый день! Расскажите пожалуйста, как эту задачу можно написать с помощью классов. L – линейный однонаправленный список Проверить, упорядочены ли элементы списка по алфавиту.
C++ ООП. Метод считывания текста с PDF файла Напишите пожалуйста метод считывания текста с PDF файла. Очень нужно, помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread1108458.html
Ссылка на объект, возвращаемый функцией C++
Безопасно ли подобное? typedef std::vector< string > vec; vec someFoo(); vec someBoo() { // что-то делаем vec & x = someFoo(); // что-то делаем с вектором 'x', удаляем некоторые элементы return x;
C++ Утилита сбора информации о системе
Доброго времени суток. Хочу написать Утилиту сбора информации о системе на C++, для интерфейса буду использовать библиотеку SDL. Стоит ли использовать именно эти средства для написания такого проекта или есть варианты получше? Посоветуйте на какие темы в изучении следует сделать упор, какие библиотеки использовать и, возможно, какую литературу на эти темы можно было бы почитать. Заранее...
C++ Палиндромы http://www.cyberforum.ru/cpp-beginners/thread1108455.html
Каждая строка текста (до символа новой строки) является выражением. Найти все выражения палиндромы. Вывести их количество и эти выражения. Учитывать регистр. Никак не могу доделать:( #include <iostream> #include <fstream> using namespace std; int main() {
C++ Умножение матриц Доброго времени суток! Проблема заключается в том что при выводе результирующей матрицы программа выводит 0 и зацикливаться //--------------------------------------------------------------------------- #include <vcl.h> #include <conio.h> #include <stdio.h> #include <iostream.h> #include <stdlib.h> подробнее

Показать сообщение отдельно
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
01.03.2014, 18:01     Рекурсивная функция рисования кривой
Unit1.h
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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
  TPaintBox *PaintBox1;
    TButton *Button1;
    void __fastcall Button1Click(TObject *Sender);
 
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    int n;
    void paint(int, int, int, int, int);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit1.cpp

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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void TForm1::paint(int x1, int y1, int x2, int y2, int k){
    int tx,ty;
    if (n==1)
        PaintBox1->Canvas->Pen->Color=clRed;
    else
        PaintBox1->Canvas->Pen->Color=clRed;
    if (k==0){
        PaintBox1->Canvas->MoveTo(x1,y1);
        PaintBox1->Canvas->LineTo(x2,y2);
        return;
    }
    //  формулы вычисления точки,находящийся на середине отрезка и удаленной от прямой на такое расстояние
//чтобы при соединении точки с концами отрезка с данной точкой
    tx = (x1+x2) / 2 + (y2-y1) / 2;                               // ЧТО ТАКОЕ DIV??? Как его использовать на с++ ?
    ty = (y1+y2) / 2 - (x2-x1) / 2;
// рекурсивный вызов функции,соединяющих концы отрезка с данной точкой
   paint(x2,y2,tx,ty,k-1);                                                 // На с++ это как то не так передаётся!
   paint(x1,y1,tx,ty,k-1);
}
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int x1,y1,x2,y2,k;
    PaintBox1->Width = 1000;
    PaintBox1->Height= 650;
    PaintBox1->Canvas->Brush->Color = clWhite;
    PaintBox1->Canvas->Rectangle(0,0,PaintBox1->Width,PaintBox1->Height);
    // задаем начальные значения кривой и устанавливаем счетчик
     x1 = 200;
     y1 = 200;
     x2 = 500;
     y2 = 500;
     k  = 24;
     paint(x1,y1,x2,y2,k);
 
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты
Div - это целочисленное деление. То же что и / для целых чисел в c++

Добавлено через 2 минуты
Цитата Сообщение от Yark0s Посмотреть сообщение
if n=1 then begin PaintBox1.Canvas.Pen.Color:=clRed; end else begin PaintBox1.Canvas.Pen.Color:=clRed; end;
Тут что-то странное. В любом случае присваивается clRed.
 
Текущее время: 07:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru