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

Создать класс angle, включающий указанные три поля - проверить правильность кода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ где здесь ошибка? http://www.cyberforum.ru/cpp-beginners/thread848917.html
посмотрите кому не лень код, что я сделал неправильно?) записываю в первый файл размерность матрицы, и из второго файла хочу в начале просмотреть исходную матрицу, затем результатирующую матрицу (в данной случае транспонированную). исходную матрицу из второго файла вроде выводит, а результат не выводит почему то! #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<stdio.h>...
C++ Наследование, конструктор класса Объясните мне пожалуйста, что значит такая конструкция: class CMyPaintDC:public CPaintDC { public: CMyPaintDC(CWnd* pWnd = NULL); /* - объявление конструктора класса по умолчанию. Зачем ему в параметры передается указатель на тип CWnd?*/ void DrawCross(int PosX, int PosY); }; CMyPaintDC::CMyPaintDC(CWnd* pWnd) :CPaintDC(pWnd) /* - определение конструктора класса, мне... http://www.cyberforum.ru/cpp-beginners/thread848914.html
Массив строки. Удалить с масива слова которые заканчиваються на гласные буквы C++
Нужно удалить с масива слова которые заканчиваються на гласные буквы.. пожалуйста..ато я что то не пойму как правильно задать условие. мой нубо код какойто такой.. но как я понял даже не в ту сторону #include <iostream> #include <string.h> using namespace std; void main(){ char s; char s1;
Описать абстрактный класс Element (элемент логической схемы) C++
вот задание: Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND_NOT и OR_NOT — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение c...
C++ как присвоить переменной текст из файла? http://www.cyberforum.ru/cpp-beginners/thread848892.html
Нужно чтобы программа брала строку из файла и проверяла является ли строка перевертышем. Не могу присвоить переменной s строку из файла. Подскажите как это сделать. #include <string.h> #include <iostream> #include <stdio.h> #include <vector> #include <fstream> using namespace std; main() {ofstream fout; fout.open("test.txt");
C++ Разбить программу на функции Нужно оформить каждый пункт задания в виде функции. Все необходимые данные для функции должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается. Вот сама программа: #include <iostream> #include <cmath> #include <conio.h> int main() { int n, i, j = 0, abssum = 0, null = 0; подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,686
13.05.2014, 07:04     Создать класс angle, включающий указанные три поля - проверить правильность кода
Цитата Сообщение от Koshachek Посмотреть сообщение
изучаю С++ по учебнику Лафоре
Мда… И эти люди пишут книги и учат нас программировать…
Более дурацких и бессмысленных имен, чем предлагает этот Лафоре, трудно придумать.
Когда видишь тип angle, то как-то сразу догадываешься, что речь идет о географической координате, а когда char – сразу ясно, что это направление географической координаты.
А из имени функции mainQ сразу понятно какие действия она производит...
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
/////////////////////////////////////////////////////////////////////////////////////////
//В морской навигации координаты точки измеряются в градусах, минутах широты и долготы. 
//Например: 149 градусов 34.8 минут восточной долготы и 17 градусов 31.5 минут южной широты. 
//Это записывается как . Один градус равен 60 минутам (устаревшая система также делила одну минуту 
//на 60 секунд, но сейчас минуту делят на обычные десятичные доли). Долгота измеряется величиной 
//от 0 до 180 градусов восточнее или западнее Гринвича. Широта принимает значения от 0 до 90 градусов 
//севернее или южнее экватора. 
//  Создайте класс angle, включающий следующие три поля: типа int 
//для числа градусов, типа float для числа минут и типа char для указания направления (N, S, Е или W). 
//Объект этого класса может содержать значение как широты, так и долготы. 
//  Создайте метод, позволяющий 
//ввести координату точки, направление, в котором она измеряется, 
//и метод, выводящий на экран значение 
//этой координаты, например 179°59.9 Е. 
//Кроме того, напишите конструктор, принимающий три аргумента. 
//
//  Напишите функцию mainQ, которая сначала создает переменную с помощью трехаргументного конструктора 
//и выводит ее значение на экран, а затем циклически запрашивает пользователя ввести значение координаты 
//и отображает введенное значение на экране.
/////////////////////////////////////////////////////////////////////////////////////////
#include <cctype>
#include <cmath>
#include <conio.h>
#include <iostream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
typedef int             T_int_degree;
typedef double          T_real_minute;
/////////////////////////////////////////////////////////////////////////////////////////
enum    T_geo_direction
{
    N,
    S,
    E,
    W
};
/////////////////////////////////////////////////////////////////////////////////////////
class  T_geo_coord
{
    //-----------------------------------------------------------------------------------
    static const int    MINUTES_PER_DEGREE_ = 60;
    static const int    RIGHT_ANGLE_        = 90;
    static const int    DEGREE_PERIOD_      = 360;
    //-----------------------------------------------------------------------------------
    T_int_degree        int_degrees_;
    T_real_minute       real_minutes_;
    T_geo_direction     geo_direction_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_geo_coord
        (
            T_int_degree        degrees         =   0,
            T_real_minute       minutes         =   0,
            T_geo_direction     geo_direction   =   E
        )
        :
        int_degrees_    ( degrees       ),
        real_minutes_   ( minutes       ),
        geo_direction_  ( geo_direction )
    {
        normalize();
    }
    //-----------------------------------------------------------------------------------
    void  input()
    {
        print_prompt_and_input_val
            (
                "\n\n\nВведите географическую координату:\n\t"
                "градусы (целое значение)\t\t=\t",
                int_degrees_
            );
 
        print_prompt_and_input_val
            (
                "\tминуты (с плавающей точкой)\t\t=\t",
                real_minutes_
            );
 
        print_prompt_and_input_geo_direction( "\tгеографическое направление (N, S, E, W)\t=\t" );
 
        normalize();
    }
    //-----------------------------------------------------------------------------------
    T_str  str()    const
    {
        std::ostringstream  sout;
 
        sout    <<  int_degrees_
                <<  '°'
                <<  real_minutes_
                <<  ' ';
 
        switch( geo_direction_ )
        {
        case N:
            sout    <<  'N';
            break;
 
        case S:
            sout    <<  'S';
            break;
 
        case E:
            sout    <<  'E';
            break;
 
        case W:
            sout    <<  'W';
        }//switch
 
        return  sout.str();
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    void  normalize()
    {
        T_real_minute   real_degrees    =   int_degrees_ + real_minutes_ / MINUTES_PER_DEGREE_;
 
        if( real_degrees < 0 )
        {
            real_degrees *= -1;
            change_geo_direction();
        }
 
        real_degrees    =   fmod    (
                                        real_degrees,
                                        DEGREE_PERIOD_
                                    );
 
        switch( geo_direction_ )
        {
        case N:
        case S:
            if( real_degrees >= RIGHT_ANGLE_ * 3 )
            {
                real_degrees = DEGREE_PERIOD_ - real_degrees;
                change_geo_direction();
            }
            else if( real_degrees >= RIGHT_ANGLE_ * 2 )
            {
                real_degrees = real_degrees - RIGHT_ANGLE_ * 2;
                change_geo_direction();
            }
            else if( real_degrees >= RIGHT_ANGLE_ )
            {
                real_degrees = RIGHT_ANGLE_ * 2 - real_degrees;
            }
            break;
        case E:
        case W:
            if( real_degrees >= RIGHT_ANGLE_ * 2 )
            {
                real_degrees = DEGREE_PERIOD_ - real_degrees;
                change_geo_direction();
            }
        }//switch
 
        T_real_minute   real_degrees_int_part;
        real_minutes_   =   modf( real_degrees, &real_degrees_int_part ) * MINUTES_PER_DEGREE_;
        int_degrees_    =   T_int_degree( real_degrees_int_part );
    }
    //-----------------------------------------------------------------------------------
    void  change_geo_direction()
    {
        switch( geo_direction_ )
        {
        case N:
            geo_direction_ = S;
            break;
 
        case S:
            geo_direction_ = N;
            break;
 
        case E:
            geo_direction_ = W;
            break;
 
        case W:
            geo_direction_ = E;
        }//switch
    }
    //-----------------------------------------------------------------------------------
    template<typename  T>
    void  print_prompt_and_input_val
        (
            const T_str&    prompt,
            T&              val
        )
    {
        std::cout   <<  prompt;
        std::cin    >>  val;
    }
    //-----------------------------------------------------------------------------------
    void  print_prompt_and_input_geo_direction( const T_str&  prompt )
    {
        char  geo_dir = 0;
 
        do
        {
            std::cout   <<  prompt;
 
            std::cin    >>  geo_dir;
            geo_dir     =   toupper( geo_dir );
        }
        while   (
                        geo_dir     !=  'N'
                    &&  geo_dir     !=  'S'
                    &&  geo_dir     !=  'E'
                    &&  geo_dir     !=  'W'
                );
 
        switch( geo_dir )
        {
        case 'N':
            geo_direction_ = N;
            break;
        case 'S':
            geo_direction_ = S;
            break;
        case 'E':
            geo_direction_ = E;
            break;
        case 'W':
            geo_direction_ = W;
        }//switch
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
void  demo_geo_coord()
{
    T_geo_coord     geo_coord
                        (
                            -1000000,
                            -1000000.5,
                            N
                        );
 
    std::cout   <<  geo_coord.str();
 
    for(;;)
    {
        geo_coord.input();
        std::cout   <<  geo_coord.str();
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int  main()
{
    std::locale::global(std::locale(""));
    T_geo_coord     geo_coord;
    demo_geo_coord();
    getch();
}
 
Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru