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

Лафоре задача по классам - C++

Восстановить пароль Регистрация
 
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
27.07.2012, 19:42     Лафоре задача по классам #1
Задача из книги лафоре по классам №7:
нужно написать программу используя классы для ввода и вывода координат, кроме того нужно написать конструктор который будет принимать 3 аргумента и написать функцию main которая будет создавать переменную с помощью трёхаргументного конструктора и будет выводить её значение на экран а затем циклически запрашивает ввод координат и после их выводит.
Собственно сделал всё кроме конструктора,программа работает потому что работает конструктор компилятора, мне же нужно записать свой, как я не имею представления, точнее имею но все варианты перепробовал и не вышли....если добавляю свой конструктор принимающий аргументы всегда вылетала ошибка "нет подходящего конструктора",так же проблема с выводом,когда вывожу нужно чтобы после значения первого был символ градусов, в интернете не нашёл правельный рабочий код, пишу в Visual C++.

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
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////////////////////////////////////////////
class kurs
{
public:
    char w;   //направление по долготе
    char s;      //направление по широте
    kurs():w('W'),s('S')
    {           }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class time        //время курса
{
public:
    float w_minutes;
    float s_minutes;         
    time():w_minutes(0.0),s_minutes(0.0)
    {       }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class grad       //градусы курса
{
public:
    int s_gradus;    //градусы широты
    int w_gradus;    //градусы долготы
    grad():w_gradus(0),s_gradus(0)
                            {       }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class angle
{
public:     
    grad gradus;        
    time minutes;
    kurs naprav;
    int counter;
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class ship
{
private:
    angle shipp;
public:
    void getinfo()
    {
        
        cout<<"Введите долготу градусы(0-180),время(0-60),направление(W,E): "; cin>>shipp.gradus.w_gradus>>shipp.minutes.w_minutes>>shipp.naprav.w;
        cout<<"Введите широту градусы(0-90),время(0-60),направление(S,N): "; cin>>shipp.gradus.s_gradus>>shipp.minutes.s_minutes>>shipp.naprav.s;
    }
    void display()
    {
        static int counter;
        counter++;
        cout<<"Корабль: "<<counter<<" ";
        cout<<shipp.gradus.w_gradus<<'\xF8'<<shipp.minutes.w_minutes<<"'"<<shipp.naprav.w<<", "
            <<shipp.gradus.s_gradus<<'\xF8'<<shipp.minutes.s_minutes<<"'"<<shipp.naprav.s<<endl; 
    }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
/*  angle a1(117,78,34.7,12.6,W,S);*/
    setlocale(0,"");
    ship ship1;
    ship1.getinfo();
    ship1.display();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 19:42     Лафоре задача по классам
Посмотрите здесь:

Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) C++
Лафоре,задача про денежный тип C++
C++ Задача из Лафоре
Задача из Лафоре C++
Лафоре. Глава 11. Задача 2 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
27.07.2012, 19:57     Лафоре задача по классам #2
для какого класса нужен констрктор? Или какие поля класса необходимо инициализировать при его вызове?
Neon-z
46 / 41 / 1
Регистрация: 06.09.2010
Сообщений: 419
27.07.2012, 20:36     Лафоре задача по классам #3
Я в вижуал не оч шарю, но в свое время я учил что конструктор с параметрами объявляется так:
C++
1
2
3
4
5
6
class example {
public:
example(a,b){
//code
}
}
примерно такое. То есть параметры я за скобку не выношу.
cojuer
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 5
27.07.2012, 20:40     Лафоре задача по классам #4
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
#include <iostream>
#include <conio.h>;
using namespace std;
///////////////////////////////////////////////////////////////////////////////////////////////////
class kurs
{
public:
    char w;   //направление по долготе
    char s;      //направление по широте
    kurs():w('W'),s('S')
    {           }
    kurs(char w,char s):w(w),s(s)
    {           }
 
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class time        //время курса
{
public:
    float w_minutes;
    float s_minutes;         
    time():w_minutes(0.0),s_minutes(0.0)
    {       }
    time(float w,float s):w_minutes(w),s_minutes(s)
    {       }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class grad       //градусы курса
{
public:
    int s_gradus;    //градусы широты
    int w_gradus;    //градусы долготы
    grad():w_gradus(0),s_gradus(0)
                            {       }
    grad(int s,int w):w_gradus(s),s_gradus(w)
    {}
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class angle
{
public:     
    grad gradus;        
    time minutes;
    kurs naprav;
    int counter;
    angle(int s,int w,float s1,float w1,char w3,char s3):gradus(s,w),minutes(s1,w1),naprav(w3,s3)
    {}
};
///////////////////////////////////////////////////////////////////////////////////////////////////
class ship
{
private:
    angle shipp;
public:
    ship():shipp(0,0,0,0,'W','S')
    {}
    void getinfo()
    {
        
        cout<<"Введите долготу градусы(0-180),время(0-60),направление(W,E): "; cin>>shipp.gradus.w_gradus>>shipp.minutes.w_minutes>>shipp.naprav.w;
        cout<<"Введите широту градусы(0-90),время(0-60),направление(S,N): "; cin>>shipp.gradus.s_gradus>>shipp.minutes.s_minutes>>shipp.naprav.s;
    }
    void display()
    {
        const char a=176;
        static int counter;
        counter++;
        cout<<"Корабль: "<<counter<<" ";
        cout<<shipp.gradus.w_gradus<<a<<shipp.minutes.w_minutes<<"'"<<shipp.naprav.w<<", "
            <<shipp.gradus.s_gradus<<a<<shipp.minutes.s_minutes<<"'"<<shipp.naprav.s<<endl; 
    }
};
///////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    angle a1(117,78,34.7,12.6,'W','S');
    setlocale(0,"");
    ship ship1;
    ship1.getinfo();
    ship1.display();
    getch();
    return 0;
}
Не знаю, это ли нужно,но так работает.
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
27.07.2012, 20:43     Лафоре задача по классам #5
Цитата Сообщение от Elfenlide Посмотреть сообщение
angle a1(117,78,34.7,12.6,W,S);
А где, собсно, подходящий конструктор?
Цитата Сообщение от Elfenlide Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
class angle
{
public:     
    grad gradus;        
    time minutes;
    kurs naprav;
    int counter;
};
Нема...

В чем проблема то, собсно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class angle
{
public:     
    grad gradus;        
    time minutes;
    kurs naprav;
    int counter;
public:
    angle(grad g, time m, kurs k, int c) :
        gradus(g),
        minutes(m),
        naprav(k),
        counter(c)
    { }
};
Единственно что, не уверен, что адекватно будет работать следующая конструкция
C++
1
2
3
4
5
6
class ship
{
private:
    angle shipp;
    // ...
};
Для придания ей адекватности в конструкторе класса ship нужно явно вызвать конструктор класса angle со всеми параметрами.
Что то вроде
C++
1
2
3
4
5
6
7
8
9
10
class ship
{
private:
    angle shipp;
    // ...
public:
    ship(g, m, k, c) :
        shipp(g, m, k, c)
    { }
};
Либо, если не хотите передавать в ship параметры, оформить shipp как ссылку (angle *shipp). Тогда уже в том же конструкторе явно инициализировать класс angle посредством оператора new и предварительно определенных 4х переменных.

Удачи.
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
27.07.2012, 22:27  [ТС]     Лафоре задача по классам #6
cojuer, не могу вам спасибо поставить но вы сделали то что нужно!)спасибо огромное)
и понял наконец как задавать коды символов, огромное спасибо!)
Yandex
Объявления
27.07.2012, 22:27     Лафоре задача по классам
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru