23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
1

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

27.07.2012, 19:42. Показов 1133. Ответов 5
Метки нет (Все метки)

Задача из книги лафоре по классам №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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2012, 19:42
Ответы с готовыми решениями:

Задача из Лафоре
есть задачка из Лафоре -&gt; Модифицируйте класс bMoney из упражнения 12 главы 7 «Массивы и...

Задача из Лафоре
Для разъяснения действия наших доморощенных указателей мы смоделируем память компьютера с помощью...

Не компилируется задача из Лафоре
Помогите пожалуйста разбораться почему компилятор ругается: 1&gt;L.obj : error LNK2019: unresolved...

Задача по книге Р. Лафоре
Пример по книге Лафоре... (Система Windows 10/64bit.) Я знаю что на форуме есть решения но я хочу...

5
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
27.07.2012, 19:57 2
для какого класса нужен констрктор? Или какие поля класса необходимо инициализировать при его вызове?
0
48 / 43 / 8
Регистрация: 06.09.2010
Сообщений: 419
27.07.2012, 20:36 3
Я в вижуал не оч шарю, но в свое время я учил что конструктор с параметрами объявляется так:
C++
1
2
3
4
5
6
class example {
public:
example(a,b){
//code
}
}
примерно такое. То есть параметры я за скобку не выношу.
0
0 / 0 / 1
Регистрация: 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;
}
Не знаю, это ли нужно,но так работает.
0
60 / 60 / 8
Регистрация: 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х переменных.

Удачи.
1
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
27.07.2012, 22:27  [ТС] 6
cojuer, не могу вам спасибо поставить но вы сделали то что нужно!)спасибо огромное)
и понял наконец как задавать коды символов, огромное спасибо!)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2012, 22:27
Помогаю со студенческими работами здесь

Лафоре. Глава 11. Задача 2
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include &lt;iostream&gt; #include...

Очередь (задача из Лафоре)
Задача 9 из Лафоре: Надо написать класс queue, имеющий два метода: put() для помещения элемента в...

Задача 7 главы 7 из книги Р. Лафоре. Строки
Добрый день! Недавно начал изучать С++ по, наверное, уже всем поднадоевшему, учебнику Роберта...

Лафоре,задача про денежный тип
Вот задачка: Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для...

Правильное ли решение задачи? Лафоре. 3 глава 9 задача
Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за вашим столом могут...

Задача из книги Р.Лафоре содержит ошибки, исправьте пожалуйста
#include &lt;iostream&gt; using namespace std; int main() { int age; for(int j=0;j&lt;4;j++) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru