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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 13:01   #1
KroshkaKartoshka
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 4
Сообщение в чем проблема?

Нужно Составить программу, которая рисует на экране точку, движущуюся по окружности с постоянной угловой скоростью. При нажатии на клавишу ">" скорость несколько увеличивается, при нажатии на клавишу "<" скорость несколько уменьшается.

точка по кругу двигается, но скорость не меняется. в чем проблема? подскажите пожалуйста.
Код:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<dos.h>
#include<stdio.h>

void tochka(int x, int y,int r,int X, int Y, int R,int color, int i)
{
x=X+R*cos(i);
y=Y+R*sin(i);

setcolor(color);
circle(x,y,r);
}

void v(int a,int key,int k)
{
a=1000;
if(kbhit())
{
key=getch();
if(key==44)
a=3000;
if(key==46)
a=500;
}
}

int main()
{
clrscr();

int i,r,x,y,X,Y,R,key,a,k;

int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode != grOk)
{
printf("Graphics error: %s\n",grapherrormsg(errorcode));
printf("Press any my to half:");
getch();
exit(1);
}

X=getmaxx(); X=X/2;
Y=getmaxy(); Y=Y/2;
R=Y-100;
r=2;
k=0;
for(i=0;i<360;i++)
{
tochka(x,y,r,X,Y,R,RED,i);
v(a,key,k);
delay(a);
tochka(x,y,r,X,Y,R,BLACK,i);
if(i==360)
i=0;
}
closegraph();
return 0;
}

Последний раз редактировалось Stilet; 18.11.2012 в 18:53.
KroshkaKartoshka вне форума Ответить с цитированием
Старый 18.11.2012, 13:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

начните с того, что синус и косинус принимают аргумент в радианах, а не градусах
p51x вне форума Ответить с цитированием
Старый 18.11.2012, 15:21   #3
KroshkaKartoshka
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 4
По умолчанию

Как это сделать? и что делать со скоростью?
KroshkaKartoshka вне форума Ответить с цитированием
Старый 18.11.2012, 15:30   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Сходить в школу в 5 класс на урок математики и выучить формулу перевода градусов в радианы.

П.С. http://ru.wikipedia.org/wiki/Радиан
p51x вне форума Ответить с цитированием
Старый 18.11.2012, 15:36   #5
KroshkaKartoshka
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 4
По умолчанию

меня больше интересует вопрос о скорости. Как сделать чтобы скорость изменялась?
П.С. спасибо за подсказку
KroshkaKartoshka вне форума Ответить с цитированием
Старый 18.11.2012, 16:03   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Например, задержку между перересовкой сделать постоянной, а изменять шаг цикла.
p51x вне форума Ответить с цитированием
Старый 19.11.2012, 09:57   #7
stpdqstns
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 33
По умолчанию

Еще не понятно зачем вы передаете параметр "а" по значению в функцию v() , по выходу из которой значение "а" остается неизменным.
stpdqstns вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа как программа. вопрос leonidsm Общие вопросы C/C++ 5 02.10.2012 21:30
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56