Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 14:17   #1
Karina89
Пользователь
 
Регистрация: 26.03.2011
Сообщений: 67
Вопрос Перевести в Турбо Паскаль

помогите, пожалуйста, перевести на TurboPascal

Цитата:
#include <stdio.h>
#include <math.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <time.h>

typedef struct TRANSP trans;//структура передачи
struct TRANSP{
int o;//порядок искривления
int switcer;//переключатель кривых
GtkWidget *window_tr;//где рисуем
};

//фун-ия дробления прямой
void KOH(GtkWidget *w, int k, int o, int x1, int y1, int x2, int y2, int i){
cairo_t *cr;
cr = gdk_cairo_create (w);
cairo_set_line_width(cr, 5);
cairo_set_source_rgb(cr, 0, 0, 0);
// точка на 1/3 длины
double x3 = x1 + (x2 - x1)/3;
double y3 = y1 + (y2 - y1)/3;
// точка на 2/3 длины
double y4 = y1 + 2 * (y2 - y1)/3;
double x4 = x1 + 2 * (x2 - x1)/3;
//закрашиваем среднюю треть прямой
cairo_line_to(cr, x3, y3);
cairo_line_to(cr, x4, y4);
cairo_stroke (cr);
// длина линии
double L = sqrt(pow((x1 - x2),2) + pow((y1 - y2),2));
// высота нового равностороннего треугольника
double h = L /(2 * sqrt(3));
// углы между линией и осью ОХ
double sina = (y2 - y1)/L;
double cosa = (x2 - x1)/L;
// вершина галочки
double x5 = (x2 + x1)/2 + h * i * sina;
double y5 = (y2 + y1)/2 - h * i * cosa ;
// рисуем "галочку"
cairo_set_source_rgb(cr, 0, 1, 0);
cairo_set_line_width (cr, 2);
cairo_line_to(cr, x3, y3);
cairo_line_to(cr, x5, y5);
cairo_line_to(cr, x5, y5);
cairo_line_to(cr, x4, y4);
cairo_stroke (cr);
k++;// текущий порядок кривй Коха
if (k<o){// рекурсивно вызываем эту фи-ию пока порядок кривизны не будет равен данному
KOH(w, k, o, x1, y1, x3, y3, i);
KOH(w, k, o, x3, y3, x5, y5, i);
KOH(w, k, o, x5, y5, x4, y4, i);
KOH(w, k, o, x4, y4, x2, y2, i);
}
cairo_destroy(cr);
}
gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data){
trans *h;
h=(trans*)data;
int o, switcer;
o=h->o;
switcer=h->switcer;
cairo_t *cr;
cr = gdk_cairo_create (widget->window);
//рисуем фон
cairo_rectangle(cr, 0, 0, widget->allocation.width, widget->allocation.height);
cairo_set_source_rgb(cr,0,0,0);
cairo_fill(cr);
// рисуем саму кривую
cairo_set_source_rgb(cr,0,1,0);
switch(switcer){
//обычная кривая Коха (в основе лежит обычная прямая)
case 1:{
int x1=20, y1=widget->allocation.height/2,
x2=widget->allocation.width-20, y2=widget->allocation.height/2;
int k=0;
cairo_line_to(cr, x1, y1);
cairo_line_to(cr, x2, y2);
cairo_stroke (cr);
cairo_destroy(cr);
if (o>0)
KOH(widget->window, k, o, x1, y1, x2, y2, 1);
}
break;

}
Karina89 вне форума Ответить с цитированием
Старый 31.03.2011, 14:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А какова задача?
Так просто вышеприведенный код в Паскаль не перевести - проще заново с нуля написать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2011, 14:42   #3
Сашулька18
Новичок
Джуниор
 
Регистрация: 30.03.2011
Сообщений: 1
По умолчанию

Написать программу для visual basic script.
Известно, что сторона квадрата равна а, радиус круга r. Выведите на экран название и значение площади большей фигуры.
Сашулька18 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести из С++ в паскаль Ver-Mishel Помощь студентам 0 15.02.2011 20:52
Перевести С++ в Паскаль alphadog900 Помощь студентам 6 11.12.2010 18:41
Турбо паскаль Gabi Помощь студентам 2 24.12.2008 22:18
Турбо Паскаль Jondeer Помощь студентам 3 28.10.2007 12:42
Турбо Паскаль Jondeer Помощь студентам 5 27.10.2007 17:19