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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2011, 23:53   #1
sasha14486
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 23
По умолчанию записи в структуре

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

Так как я понимаю нужно сделать конвектацию из одной системы координат в другую. Для этого нужно создать две функции.Но не могу это сделать. Помогите пожалуйста.

Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define N 2

struct decart {
    int x, y;
}; arr_decart[N];
 
struct polar {
    float r, fi;
}; arr_polar[N];


 void main(){
   int i;
   clrscr();
   for(i=0;i<N;i++){
      puts("Vvedite x:");
      scanf("%d",&arr_decart[i].x);
      puts("Vvedite y:");
      scanf("%d",&arr_decart[i].y);
   }
      puts("\n");
   for(i=0;i<N;i++){
      ........ 
   }
sasha14486 вне форума Ответить с цитированием
Старый 04.06.2011, 00:09   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
decart D;
polar P;
...
P.r=sqrt(D.x*D.x+D.y*D.y);
P.fi=atan(x/y);
if(x<0){
  if(y>0)
    P.fi+=pi;
  else
    P.fi-=pi;
};
fi получится в диапазоне (-pi;pi]
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 04.06.2011, 00:14   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

В чем проблема-то?
Статью о переводе декартовых координат в полярные -- и вперед -)
Даже функция подходящая есть, оперирующая именно двумя аргументами, чтобы правильно определить угол фи -- atan2.


Update
Опередили меня -)
Но все-таки позволю себе поправить.
Цитата:
Код:
P.fi=atan(x/y);
Наверное,
Цитата:
учитывая, что для вычисления полярного угла не достаточно знать отношение y к x, а ещё нужны знаки одного из этих чисел
, все же
Код:
P.fi=atan2(x, y);
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 04.06.2011 в 00:20.
Mandrivnyk вне форума Ответить с цитированием
Старый 04.06.2011, 00:18   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Даже функция подходящая есть
точно, про atan2 забыл)

sasha14486, вот тебе код перевода
Код:
P.r=sqrt(D.x*D.x+D.y*D.y);
P.fi=atan2(x,y);
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
редактирование в структуре MorbiuS Общие вопросы C/C++ 7 21.12.2010 03:05
Вопрос по структуре luk4196 Общие вопросы C/C++ 6 31.05.2010 19:11
поиск в структуре Silveria Общие вопросы C/C++ 4 12.05.2010 16:13
Замечания к структуре БД artemavd БД в Delphi 13 01.05.2009 19:40
ОШИБКА в структуре Panterka Помощь студентам 7 19.12.2007 09:24