Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Графика с С++

Автор: Domin9es 20.01.2008 13:04

Помогите с графикой. Надо это сделать в с++. Код на паскале.


program parametr;
uses graph , crt;
const a1 = 200; b1 = 1; c1 = 50;
a2 = 200; b2 = 16; c2 = 50;
var graphdriver , GraphMode :integer;
i : integer;
t , x ,y , x1 ,y1 , step:real;
begin
GraphDriver := VGA;
GraphMode := VGAHI;
InitGraph(graphDriver,GraphMode,'x:\mypasc~1\IVSEM~1\');

setviewport(320,240,639,479,clipoff);
step := 0.0001;
t:= step;

moveto(round(a1 * sin((b1*t+c1))),round(a2 * cos((b2*t+c2))));
t := 0;
repeat
t := t + step;
x := a1 * sin((b1*t+c1));
y := a2 * cos((b2*t+c2));
delay(100);
lineto(round(x),round(y));
until (t >= 10) or keypressed;
readln;
closegraph;
end.


Автор: volvo 20.01.2008 13:42

Программа же дословно переводится на С++, в чем проблема?

#include <conio.h>
#include <dos.h>
#include <math.h>
#include <graphics.h>

const int
a1 = 200,
b1 = 1,
c1 = 50,
a2 = 200,
b2 = 16,
c2 = 50;

int main() {

int graphdriver = VGA, graphmode = VGAHI;

initgraph(&graphdriver, &graphmode, "");
setviewport(320, 240, 639, 479, 0);
double step = 0.0001, t = step;

moveto(
(int)(a1 * sin((b1*t+c1))),
(int)(a2 * cos((b2*t+c2)))
);

t = 0;
do {
t += step;
int x = (int)(a1 * sin((b1*t+c1)));
int y = (int)(a2 * cos((b2*t+c2)));
delay(10);
lineto(x, y);
}
while(t < 10 && !kbhit());
while(getch() != 13);
closegraph();

return 0;
}

Найди отличия, что называется...

Автор: Domin9es 20.01.2008 13:53

Я в графике ноль wacko.gif , даже на паскале не я делал no1.gif

Пишет use init graph blink.gif

Автор: volvo 20.01.2008 14:09

Программа прекрасно компилируется и работает, но только для этого в одной папке с программой должен лежать файл EGAVGA.BGI...

Автор: Domin9es 20.01.2008 14:12

Спасибо!!! все работает