Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr_Cipa
1 / 1 / 0
Регистрация: 13.06.2015
Сообщений: 25
#1

Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре - C++

10.02.2017, 20:12. Просмотров 159. Ответов 4
Метки нет (Все метки)

Доброго времени суток господа. Подскажите пожалуйста каким образом можно объединить классы? Почему при создание объекта ship в main выдает ошибку? А еще интересует такой вопрос: Можно ли в этой ситуации классы для нумерации и координат засунуть в класс корабля?
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
// (page_259)exersice_10.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
char degSimb = '\xB0'; //(для значка градуса используем '\xB0')
 
//Класс нумерующий последовательно каждый корабль
//------------------------------------------------------------------
class MyClass
{
private:
    //Поле, хранящее порядковый номер объекта
    int number;
    //Поле, хранящее число созданных объектов класса (должно относиться ко всему классу в целом)
    static int count; //Объявление статической переменной
 
public:
    //Конструктор присваивающий объекту индивидуальный номер
    MyClass() :number(++count)
    {
        showDisplay();
    }
    //Метод выводящий на экран порядковый номер объекта
    void showDisplay()
    {
        cout << "ship #: " << number << endl;
    }
 
};
//Определение статической переменной в не класса
// указываем тип, название класса, :: расширение области видимости, название переменной , значение которым определяем
int MyClass::count = 0;
//------------------------------------------------------------------
 
//Класс запрашивающий и выводящий координаты корабля
//------------------------------------------------------------------
class angle
{
public:
    //Конструктор принимающий три аргумента
    angle(int deg, float min, char coor) :degrees(deg), min(min), coordinates(coor)
    {}
    //Метод для ввода координат
    void entCoor()
    {
        char q; //для ввода
        cout << "Введите координату направления в формате (149" << degSimb << "59.9\' N): ";
        cin >> degrees >> q >> min >> q >> coordinates;
    }
    //Метод для вывода координат
    void showDisp()
    {
        cout << "\n" << degrees << degSimb << min << "\' " << coordinates << endl;
    }
private:
    int degrees; //градусы
    float min; //минуты
    char coordinates; //координаты (N,S,E,W)
};
//------------------------------------------------------------------
 
class ship
{
private:
    //Поля класса
    MyClass shipNumber;
    angle a1, a2;
    
public:
 
    //Метод сохраняющий в объекте данные о корабле вводимые пользователем
    void saveObj()
    {
        
    }
    //Метод выводящий данные о корабле на экран
};
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //Создаем три объекта
    
    ship s1;
    
    
 
    
    //Вводим данные о трех объектах
    //Выводим полученные данные на экран
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2017, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре (C++):

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

Упражнение из книги Лафоре - C++
//11.cpp #include &lt;iostream&gt; using namespace std; class sterling { private: long pounds; int shil; int pens;

Зацикливание программы. В чем же ошибка? ( Упражнение 5 Глава 7 Лафоре ООП C++) - C++
Миллион раз пересмотрел, ну не вижу ошибку и все тут :(. Должна же остановка на вводе быть! Что туда передается.... Не понятно... Помогите...

Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава) - C++
Доброго времени суток. В очередной раз обращаюсь за советом касательно разъяснения задачи Понимаю типы ifstream, ofstream как...

Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре - C++
Вот хочу научиться программировать, пошел я в библиотеку и взял две книги по программированию на С++(кроме них не фига не было по С++) ...

Работа с классами в ООП - C++
Привет всем, доброго времени суток, путаюсь в ООП. Подскажите, как работать с классами, как &quot;правильно&quot; разрабатывать методы(что-бы всё...

4
Mr_Cipa
1 / 1 / 0
Регистрация: 13.06.2015
Сообщений: 25
10.02.2017, 20:14  [ТС] #2
ошибка во какая
Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре
0
Peoples
1175 / 680 / 426
Регистрация: 06.02.2016
Сообщений: 1,785
Записей в блоге: 13
Завершенные тесты: 4
10.02.2017, 22:17 #3
У вас отсутствуют конструкторы по умолчанию
C++
1
2
3
ship()=default;
//////////////////////
angle()=default;
1
Mr_Cipa
1 / 1 / 0
Регистрация: 13.06.2015
Сообщений: 25
11.02.2017, 11:05  [ТС] #4
А зачем в angle конструктор? Там же есть вроде.
Добавил конструктор в ship.
C++
1
ship(): a1(0, 0.0, 'N'),a2(0, 0.0, 'N'){}
И все заработало. Спасибо. Подскажи пожалуйсто, аесли два класса MyClass и angle засунуть в нутарь класса ship. Так можно вообще делать?
Все решение
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
// (page_259)exersice_10.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
char degSimb = '\xB0'; //(для значка градуса используем '\xB0')
 
//Класс номерующий последовательно каждый корабль
//------------------------------------------------------------------
class MyClass
{
private:
    //Поле, хранящее порядковый номер объекта
    int number;
    //Поле, хранящее число созданных объектов класса (должно относиться ко всему классу в целом)
    static int count; //Объявление статической переменной
 
public:
    //Конструктор присваевающий объекту индивидуальный номер
    MyClass() :number(++count)
    {}
    //Метод выводящий на экран порядковый номер объектат
    void showDisplay()
    {
        cout << "ship #: " << number;
    }
 
};
//Определение статической переменной в не класса
// указываем тип, название класса, :: расширение области видимости, название переменной , значение которым определяем
int MyClass::count = 0;
//------------------------------------------------------------------
 
//Класс запрашивающий и выводящий координаты коробля
//------------------------------------------------------------------
class angle
{
public:
    //Конструктор принимающий три аргумента
    angle(int deg, float min, char coor) :degrees(deg), min(min), coordinates(coor)
    {}
    //Метод для ввода координат
    void entCoor()
    {
        char q; //для ввода
        cout << "Введите координату направления в формате (149" << degSimb << "59.9\' N): ";
        cin >> degrees >> q >> min >> q >> coordinates;
    }
    //Метод для вывода координат
    void showDisp()
    {
        cout  << degrees << degSimb << min << "\' " << coordinates;
    }
private:
    int degrees; //градусы
    float min; //минуты
    char coordinates; //координаты (N,S,E,W)
};
//------------------------------------------------------------------
 
class ship
{
private:
    //Поля класса
    MyClass shipNumber;
    angle a1, a2;
    
public:
    ship(): a1(0, 0.0, 'N'),a2(0, 0.0, 'N'){}
    //Метод сохраняющий в объекте данные о карабле вводимы пользователем
    void saveObj()
    {
        a1.entCoor();
        a2.entCoor();
    }
    //Метод выводящий данные о коробле на экран
    void showDisplay()
    {
        shipNumber.showDisplay();
        cout << "------";
        a1.showDisp();
        cout << ", ";
        a2.showDisp();
        cout << endl;
    }
};
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    //Создаем три объекта
    ship s1, s2, s3;
        
    //Вводим данные о трех объектах
    s1.saveObj();
    s2.saveObj();
    s3.saveObj();
 
    //Выводим полученные данные на экран
    cout << "===============================================================" << endl;
    s1.showDisplay();
    s2.showDisplay();
    s3.showDisplay();
    cout << "===============================================================" << endl;
 
    system("pause");
    return 0;
}
0
Peoples
1175 / 680 / 426
Регистрация: 06.02.2016
Сообщений: 1,785
Записей в блоге: 13
Завершенные тесты: 4
11.02.2017, 11:37 #5
Цитата Сообщение от Mr_Cipa Посмотреть сообщение
А зачем в angle конструктор?
А по умолчанию то конструктора нет. Вы создаёте "пустой"(не инициализированный) ship,частью которого должен являться "пустой" angle.
Можно
1
11.02.2017, 11:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2017, 11:37
Привет! Вот еще темы с ответами:

Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? - C++
Условие: в программе определен печесляемый тип данных etype, отражающий должность сотрудника enum etype { laborer, secretary, manager,...

Программка из 4 главы книги Страуструпа принципы и практика - не работает - C++
В общем в 4 главе в подпункте векторы на странице 152 имеется вот такой код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Упражнение из книги. - C++
В книге (Язык программирования С++. Вводный курс. 4-е изд. (Стенли Липпман)) есть задание: &quot;Напишите программу, читающую строки в...

Задания из книги Р. Лафоре - C++
Приветствую всех! Выполняю задание из книги Р. Лафоре &quot;ООП в С++&quot;. Задание главы 7. Одним из недостатков C++ являеться отсутствие...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru