Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод на экран правильного n-угольника, Каким способом лучше это сделать? 
:(
    Опции темы
Code Magister
  Дата 14.4.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Как реализовать функцию, которая выводит на дисплей правильный n-угольник, если n задает юзер?
Просьба поподробней обьяснить плиз
--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 14.4.2005, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



1 нужно расчитать координаты.
как это сделать
правильный многоугольник вписываеться в окружность
допустим что один угол объязательно будет распологаться на оси х с координатами (r,0) где r - радиус окружности...
далее вычисляем угол "смещения по окружности" по формуле 360/n разумееться нужно делать в радианах.
создаем цикл i от 1 до n (не от 0, один уго у нас уже есть) и вычисляем координаты следующих вершин по формуле

x=r*cos(угол*i)
y=r*sin(угол*i)
и все полученные пары заносим в массив в той последовательности в которой получали

теперь вывод

в функции получаем контекст устройсва и делает MoveTo(r,0);
потом в цикле от 1 до n делаем LineTo в которую подставляем каждую следующую пару..

и в конце, ну так на всякий случай, делаем lineto(r,0)


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Дрон
Дата 14.4.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Цитата
И пожалуйста, помните, что мы не делаем домашних работ. Мы поможем вам советами, но сначала вы должны сделать что-то сами...


Step
Цитата
в функции получаем контекст устройсва

А если он под дос пишет? smile

Это сообщение отредактировал(а) Дрон - 14.4.2005, 21:30


--------------------
Да. Именно так.
PM   Вверх
Step
Дата 14.4.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



то загружает драйвер egavga врубает графичиский режим,

и конечно не забывает делать смещения центра координат в центр экрана



_Slipknot, вообще можно и подругому, это я так с лету написал, еще можно и угол поворота ввести...



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Code Magister
Дата 15.4.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Да, мне под дос(С++ 3.1). А какой еще способ, а то этот не полностью понял.
--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 15.4.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



_Slipknot да в принципе ни какого, а что именно ты не понял

главное расчитать координаты
потом поставить курсор в одну из них потом нарисовать линию от курсора к следующей координате и курсор таким образом переместиться в новые координаты и таким образом вы отрисуете все ребра многоугольноика


или вам не понятно как вообще с графиками работать


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Code Magister
Дата 15.4.2005, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Да, впринципе я разобрался. Спасибо!
--------------------
PM MAIL WWW ICQ   Вверх
Code Magister
Дата 20.4.2005, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Step смотри(и остальные тоже).
Вот так я сделал то, что ты написал:
Код

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

int x[50], y[50];
int n,gd,gm,ugol,r;

void main()
{
    clrscr();
    printf("n: \n");
    scanf("%i", &n);
    ugol=360/n;
    r=200;

    for (int i=1; i<n; i++)
    {
        x[i]=r*cos(ugol*i);
        y[i]=r*sin(ugol*i);
    }

    gd=DETECT;
    initgraph(&gd, &gm, "C:\\TC31\\BGI");
    moveto(r,0);


    for (i=0; i<n; i++)
    {
        line(x[i], y[i], x[i+1], y[i+1]);
    }

    lineto(r,0);

    getch();
    closegraph();
}

Короче выводит хрен знает что, еще и вылазит за экран.
Вобщем откомиль у себя и посмотри.
ЧТО НЕ ТАК smile
Добавлено @ 12:11
И как сделать смещение координат в центр экрана? Наверное из-за него вылазит за экран, но если б не вылазило все равно выводит нето.
--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 20.4.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



1. угол перевести в радианы
2. второй цикл тоже нужнобы сделать от 1, первая точка у тебя задана мовом

3. вместо line сделай просто lineto(x[i],y[i]) начало линии будет точка последнего обращения которая уже заданна командой мове или предыдущем лайнто


4. кстати по идеи после цикла лайнто не нужен но на всякий случай пусть будет, торможу я че тоsmile

5. смещение координат, но тут просто во все лайны и мове к аргументам прибавляешь скажем переменную r тогда например одна вершина многоугольника с четным количеством углов будет лежать на левой стороне экрана


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Code Magister
Дата 20.4.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Как перевести угол в радианы обьясни плиз.
--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 20.4.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата(_Slipknot @ 20.4.2005, 12:07)
ugol=360/n;

ugol=2*pi/n

помоему pi в с++ определено, даст ошибку постаь вместо pi 3.14
кстати ugol сделай флоатовским
Добавлено @ 13:10
Цитата(_Slipknot @ 20.4.2005, 12:07)
ugol=360/n;

ugol=2*pi/n

помоему pi в с++ определено, даст ошибку постаь вместо pi 3.14
кстати ugol сделай флоатовским


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Code Magister
  Дата 20.4.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: 1
Всего: 1



Работает! Спасибо, Step smile

Это сообщение отредактировал(а) _Slipknot - 20.4.2005, 13:21
--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 20.4.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



_Slipknot, математику подучите - это основа


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Дрон
Дата 20.4.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



В Си константа пи это M_PI smile


--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.