0 / 0 / 0
Регистрация: 16.04.2018
Сообщений: 4
1

Реализовать класс с двумя полями, обозначающими координаты курсора

01.09.2018, 12:49. Показов 2715. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Немного не понимаю суть заданного задания:

Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать:
Для инициализации начальных значений использовать конструктор;
Обязательно использовать деструктор для удаления объектов;
Вывод на экран Display();
Для проверки программы использовать несколько случайных наборов данных для переменных first и second. Вывод результата на экран консоли.
Поле first — целое положительное число, координата курсора/указателя по горизонтали; поле second — целое положительное число, координата курсора по вертикали. Реализовать метод changex() — изменение горизонтальной координаты курсора; реализовать метод changey() — изменение вертикальной координаты курсора. Методы должны проверять выход за границу экрана.


Сделал так:у пользователя спрашиваются координаты X и Y, затем предлагается выбрать действие - показать на экране(написать координаты и поставить курсор по ним) или же изменить координаты. В самих методах изменения координат сделал проверку в соответствии с разрешением экрана. Вот и собственно вопрос, правильно ли я все понял?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2018, 12:49
Ответы с готовыми решениями:

Реализовать класс с двумя скрытыми полями first и second
В с++ только начал разбираться, прошу помощи в решении задач. Задание: ООП – Задание № 1...

Реализовать класс с двумя скрытыми полями first и second
Ребят, помогите решить задачку: (заранее спасибо:)) Сама задачка: Реализовать класс с двумя...

Определите новый класс Student с двумя закрытыми полями полями: name и sumb
Я очередной студент, которые вам, полагаю, очень надоели, но все же я очень надеюсь на вашу помощь....

Определить класс Student с двумя закрытыми полями полями: name и sumb
Всем доброго дня. Помогите пожалуйста довести код до ума. Я что то никак не разберусь. Вот задание:...

6
"C with Classes"
1641 / 1398 / 523
Регистрация: 16.08.2014
Сообщений: 5,855
Записей в блоге: 1
01.09.2018, 12:53 2
Soldier17568, без кода в этой теме практически ничего не решается, код давай
0
0 / 0 / 0
Регистрация: 16.04.2018
Сообщений: 4
01.09.2018, 12:55  [ТС] 3
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
#include <iostream>
#include <windows.h>
 
using namespace std;
class Cursor
{
private:
    int *first = new int;
    int *second = new int;
 
public:
    Cursor(int X=500, int Y=200)
    {
        *first = X;
        *second = Y;
    }
    void changex(int x)
    {
        if (x > 0 && x <= GetSystemMetrics(SM_CXSCREEN))
            *first = x;
        else
            cout << "Неверное значение, превыщающее границы." << endl;
    }
    void changey(int y)
    {
        if (y > 0 && y <= GetSystemMetrics(SM_CYSCREEN))
            *second = y;
        else
            cout << "Неверное значение, превыщающее границы." << endl;
    }
    void Display()
    {
        SetCursorPos(*first, *second);
        cout << "Значение X=" << *first << ". Значение Y=" << *second << endl;
    }
    ~Cursor()
    {
        delete first;
        delete second;
    }
};
void inputValue(int &temp)
{
 
    while (true)
    {
        cin >> temp;
        if (cin.fail() || temp<0 )
        {
            cout << "Введено некоректное значение.";
        }
        else break;
    }
}
void inputValue(char &temp)
{
    while (true)
    {
        cin >> temp;
        if (cin.fail())
        {
            cout << "Введено некоректное значение.";
        }
        else if (temp=='s' || temp=='e' || temp=='x' || temp=='y') break;
    }
}
int main()
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        int x, y;
        char choice;
        cout << "Введите X и Y координаты курсора.\n";
        inputValue(x);
        inputValue(y);
        Cursor coord(x, y);
        while (true)
        {
        cout << "Что делать дальше? s - show on display, e - edit X or Y\n";
        inputValue(choice);
        if (choice == 's')
            coord.Display();
        if (choice == 'e')
        {
            cout << "X или Y координату?\n";
            inputValue(choice);
            if (choice == 'x')
            {
                cout << "Введите новое значение.\n";
                inputValue(x);
                coord.changex(x);
            }
            if (choice == 'y')
            {
                cout << "Введите новое значение.\n";
                inputValue(y);
                coord.changey(y);
            }
        }
    }
    system("pause");
}
0
"C with Classes"
1641 / 1398 / 523
Регистрация: 16.08.2014
Сообщений: 5,855
Записей в блоге: 1
01.09.2018, 13:10 4
Soldier17568, на первый взгляд чего то не хватает, конструктора копирования, перемещения и оператора присваивания, перемещения, при таком раскладе они необходимы, по крайней мере конструктор копирования и оператор присваивания.

Добавлено через 1 минуту
Цитата Сообщение от Soldier17568 Посмотреть сообщение
Вот и собственно вопрос, правильно ли я все понял?
а так вроде правильно ты все понял.

Добавлено через 39 секунд
на мой взгляд тут невозможно не правильно понять

Добавлено через 3 минуты
Цитата Сообщение от Soldier17568 Посмотреть сообщение
SetCursorPos(*first, *second);
это наверно не надо
0
671 / 474 / 215
Регистрация: 06.09.2013
Сообщений: 1,299
01.09.2018, 13:24 5
Soldier17568, а зачем динамически выделять память под два целых числа и хранить на них указатели вместо их самих? Только чтобы
Цитата Сообщение от Soldier17568 Посмотреть сообщение
Обязательно использовать деструктор для удаления объектов
?
0
0 / 0 / 0
Регистрация: 16.04.2018
Сообщений: 4
01.09.2018, 13:35  [ТС] 6
А можете объяснить для чего нужен конструктор копирования на примере моей программы?
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
01.09.2018, 14:57 7
Цитата Сообщение от Soldier17568 Посмотреть сообщение
if (x > 0 && x <= GetSystemMetrics(SM_CXSCREEN))
Немного неправильные границы.
Надо (x >= 0 && x < GetSystemMetrics(SM_CXSCREEN))
То же самое с y.

Ещё лучше использовать:
C++
1
2
3
4
5
class Cursor
{
private:
    int first;
    int second;
В таком случае у тебя расходуется в 2 раза меньше памяти, и конструкторы копирования тебе будут не нужны, так как те, что по умолчанию, будут годные.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2018, 14:57
Помогаю со студенческими работами здесь

15. Создать класс LongLong для работы с целыми числами. Число должно быть представлено двумя полями.Реализовать арифметические операции
Добрый вечер,вот задание: Создать класс LongLong для работы с целыми числами из 64 бит. Число...

Класс с двумя полями
подскажите class classrod { protected: float a; public: ...

Создать класс с двумя полями
Здравствуйте, пишу код, не могу понять почему значение переменных из функции Sum не передаются в...

Создать класс с двумя полями и конструктором
Напишите пожалуйста класс содержащий два поля: фирма машины(строка), цена(число); конструктор и...


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

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

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