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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2008, 16:19   #1
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
Радость не дорисовывается одна сторона многоуголника на си

Почему то никак не хочет дорисовываться последняя сторона,может кто сможет поправить. Заранее спаисбо.


#include <dos.h>
#include <iostream.h>
#include <stdio.h>
#include <graphics.h>
#include <math.h>

class _multiangle
{

int angles_num;
int radius;
float area;

int _max_x;
int _max_y;

int alpha;

void selectPoints(int&, int&, int);

public:
int* ps;

_multiangle()
{
}

~_multiangle()
{
if(ps)
delete[] ps;
}

void initGraph();

void draw();

void closeGraph()
{
closegraph();
}

void getUserInput(int _angles, int _rad);

float getArea()
{
return this->area;
}

};

void _multiangle::selectPoints(int& x, int& y, int index)
{
x = /*this->_max_x/2 + */ceil( this->radius * cos(index * ((this->alpha * M_PI)/180) ) +this->_max_x/2);
y = /*this->_max_y/2 + */ceil( this->radius * sin(index * ((this->alpha * M_PI)/180) ) +this->_max_y/2);
}

void _multiangle::getUserInput(int _angles, int _rad)
{
this->angles_num = _angles;
this->radius = _rad;

//площадь
this->area = this->angles_num / 2 * this->radius * this->radius * sin(2 * M_PI / this->angles_num);

//память под пары (x,y) для многоугольника
ps = new int[(_angles+1) * 2];

this->alpha = ceil(360 / _angles);

}

void _multiangle::initGraph()
{
int graphdriver = DETECT, gmode, errorcode = 0;

initgraph(&graphdriver,&gmode,"");
//errorcode = graphresult();


this->_max_x = getmaxx();
this->_max_y = getmaxy();

int i = 0;

while(i<this->angles_num) {

this->selectPoints(ps[2*i], ps[2*i+1], i+1);
i++;
}
this->ps[2*i] =this->ps[0];
this->ps[2*i+1] =this->ps[1];
}

void _multiangle:raw()
{
moveto(0,0);
//moveto(this->ps[0], this->ps[1]);
drawpoly(this->angles_num, this->ps);
delay(5000);
}

typedef _multiangle *MultiAngle;

int main(int argc, char* const argv[])
{
int r, n; //радиус, кол-во углов



MultiAngle object = new _multiangle;

cout << "Radius: ";
cin >> r;

cout << "Angles num: ";
cin >> n;

object->getUserInput(n, r);

object->initGraph();
//while(!kbhit())
object->draw();

object->closeGraph();

cout << "Area: " << object->getArea() << "\n\n";

int i =0;

while(i <= n) {
cout << "(" << object->ps[2*i] << "," << object->ps[2*i+1] << ")" << "\n";
i++;
}
delete object;

return 0; }
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 12.05.2008, 16:20   #2
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

ой там где смайлик там draw было
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 12.05.2008, 16:30   #3
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Си не знаю, не синяк

Я так понимаю что точки заносятся в массив и потом по ним рисуется.
Кординаты последней точки это есть координаты первой точки...
Цикл н доходит, надо продлить.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 12.05.2008, 22:39   #4
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

спасибо,попроавила,все дорисовывается, теперь проблема с тем что площадь не выводиться после рисунка, Если запускать прогу еще раз или альт a 5 нажимать то можно увидеть предудущую площадь,а вот чтоб после рисунка никак не получается
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ёщё одна задача terminadoor Помощь студентам 9 23.07.2008 22:50
еще одна задачка koston Помощь студентам 4 09.04.2008 18:43
Еще одна задача felice Паскаль, Turbo Pascal, PascalABC.NET 2 03.02.2008 14:32
Беда не приходит одна! Tayfun Свободное общение 6 30.12.2007 07:58
еще одна задача в BP Jasper Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2006 15:13