Форум программистов, компьютерный форум CyberForum.ru

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать матрицу, в которой столбцы расположены в порядке возрастания сумм их элементов http://www.cyberforum.ru/cpp-beginners/thread1039485.html
Сформировать из столбцов матрицы В матрицу С, в которой столбцы расположены в порядке возрастания сумм их элементов. Как составить матрицу и найти сумму более менее понятно, помогите, пожалуйста, с сортировкой
C++ Вычислить и вывести на экран в виде таблицы значение функции Вычислить и вывести на экран в виде таблицы значение функции y(x) на интервале от x0 до xn с шагом dx. A, B, C, D, X, x0, xn и dx - вещественные числа, значения которых вводятся с клавиатуры. Для операций ввода-вывода использовать возможности библиотеки stdio.h. http://www.cyberforum.ru/cpp-beginners/thread1039483.html
C++ по нажатию произвольной клавиши поочередно выделяет каждое из слов текста, у которых первый и последний символы совпадают
Привет парни, спасайте, уже есть код для 2\3 программы... #include <fstream> #include <sstream> #include <list> #include <iterator> #include <string> #include <iostream> #include <conio.h> int main(){
C++ Скласти програму з використанням циклу for
Вводиться натуральне число. Вивести це ж число, розділяючи трійки цифр комами. Наприклад: вхідні дані 1000; вихідні дані 1,000; вхідні дані 12345678; вихідні дані 12,345,678 ; вхідні дані 123; вихідні дані 123; Написати мовою С++; Допоможіть будь ласка;
C++ string обьявленый в классе передать в параметры конструктора http://www.cyberforum.ru/cpp-beginners/thread1039467.html
class String{ char str; string str2; public: String(char string){ strcpy(str,string); } String(string newStr){ //вот здесь я пытаюсь через перегруженный конструктор передать строку произвольного //strcpy(str2,newStr); //размера }
C++ Вычисление корня n-ой степени Сам обучаюсь C#, но дали решить С++ не понимаю помогите пожалуйста!!! подробнее

Показать сообщение отдельно
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
13.12.2013, 12:35     Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
а как сделать для множества точек
Ну как то так наверное(не проверял)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <iostream>
#include <cmath>
 
const float PI = 3.14;
 
class ITotal
{
      public:
             virtual void print(std::ostream & out) = 0;
};
 
class Polar : public ITotal
{
  private:
      float radius;
      float azimut;
  public:
         Polar(float r = 0, float a = 0) : radius(r), azimut(a){}
         
         void setRadius(float r){ radius = r; }
         void setAzimut(float a){ azimut = a; }
         
         float getRadius()const { return radius; }
         float getAzimut()const { return azimut; }
         
         void print(std::ostream & out){ out << "Radius: " << radius << "Azimut: " << azimut; }
         
         friend std::ostream & operator <<(std::ostream & out, Polar & p);
         friend std::istream & operator >>(std::istream & in, Polar & p);
         Polar & operator =(Polar & p)
         {
                radius = p.getRadius();
                azimut = p.getAzimut();
                return *this;
         }
};
 
class Decart : ITotal
{
  private:
      float x;
      float y;
  public:
         Decart(float _x = 0, float _y = 0) : x(_x), y(_y){}
         
         void setX(float _x){ x = _x; }
         void setY(float _y){ y = _y; }
         
         float getX()const { return x; }
         float getY()const { return y; }
         
         void print(std::ostream & out){ out << "X: " << x << "Y: " << y; }
         
         friend std::ostream & operator <<(std::ostream & out, Decart & d);
         friend std::istream & operator >>(std::istream & in, Decart & d);
         Decart & operator =(Decart & d)
         {
                x = d.getX();
                y = d.getY();
                return *this;
         }
};
 
class Convert
{
      private:
             Convert(){}
             enum STATUS{NE, TO, TH, FO, FI, SX};
             STATUS statusPolar(Decart * d)
             {
                if(d->getX() > 0)
                 return NE;
                else if(d->getX() < 0 && d->getY() >= 0)
                 return TO;
                else if(d->getX() < 0 && d->getY() < 0)
                 return TH;
                else if(d->getX() == 0 && d->getY() > 0)
                 return FO;
                else if(d->getX() == 0 && d->getY() < 0)
                 return FI;
                else
                 return SX;
             }
      public:
             static Decart toDecart(const Polar & p)
             {
                 return Decart(p.getRadius() * cos(p.getAzimut()), p.getRadius() * sin(p.getAzimut())); 
             }
             
             static Polar toPolar(const Decart & d)
             {
              STATUS status = statusPolar(&d);
              switch(status)
              {
                case NE :
                 return Polar((d.getX() + d.getY()), atan(d.getX() / d.getY()); break; 
                case TO :
                 return Polar(d.getX() + d.getY(), atan(d.getX() / d.getY() + PI); break;
                case TH :
                 return Polar(d.getX() + d.getY(), atan(d.getX() / d.getY() - PI); break;
                case FO :
                 return Polar(d.getX() + d.getY(), PI / 2); break;
                case FI :
                 return Polar(d.getX() + d.getY(), PI / 2 * -1); break;
                case SX :
                 return Polar(d.getX() + d.getY(), 0); break;
              }
             }
};
 
int main()
{
  const size_t SIZE = 10;
      Polar p[SIZE];
      Decart d[SIZE];
      
      for(int i = 0; i < SIZE; ++i)
         std::cin >> p[i];
         
      for(int i = 0; i < SIZE; ++i)
         d[i] = Convert::toDecart(p[i]);
         
      for(int i = 0; i < SIZE; ++i)
         std::cout << d[i];
 
      system("PAUSE");
    
   return 0;
}
 
std::ostream & operator <<(std::ostream & out, Polar & p)
{
        p.print(out);
        return out;
}
 
std::istream & operator >>(std::istream & in, Polar & p)
{
        float tmp;
        std::cout << "Input radius: "; in >> tmp;  p.setRadius(tmp);
        std::cout << "Input azimut: "; in >> tmp;  p.setAzimut(tmp);      
}
 
std::ostream & operator <<(std::ostream & out, Decart & d)
{
        d.print(out);
        return out;
}
 
std::istream & operator >>(std::istream & in, Decart & d)
{
        float tmp;
        std::cout << "Input X: "; in >> tmp; d.setX(tmp);
        std::cout << "Input Y: "; in >> tmp; d.setY(tmp);
}
 
Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru