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

Реализовать класс с двумя скрытыми полями first и second - C++

Восстановить пароль Регистрация
 
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 11:57     Реализовать класс с двумя скрытыми полями first и second #1
В с++ только начал разбираться, прошу помощи в решении задач.
Задание:
Кликните здесь для просмотра всего текста
ООП – Задание № 1
Реализовать класс с двумя скрытыми полями first и second. Во классе должны при-
сутствовать следующие методы:
– методы задания значений SetFirst и SetSecond. Методы должны контролировать
значения аргументов на корректность;
– методы возврата данных GetFirst и GetSecond;
– вывод на экран текущих значений полей Display.
Реализовать внешнюю функцию с именем Make_{mun}, где mun — тип реализуемой
структуры. Функция должна получать в качестве аргументов значения для полей структу-
ры и возвращать структуру требуемого типа. При передаче ошибочных параметров следует
выводить сообщение и заканчивать работу.
Вариант 15
Поле first — целое положительное число, продолжительность телефонного разговора в
минутах; поле second — дробное положительное число, стоимость одной минуты в рублях.
Реализовать метод Cost — вычисление общей стоимости разговора.

вот мой набросок(незаконченный):
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
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
class TLaba1
{
    private:
      int first;
      float second;
      float rez;
 
    public:
    int SetFirst()
    {
         std::cout<<"Input first(minuts):"<<std::endl;
         scanf("%d",&first);
    }
 
    float SetSecond()
    {
         std::cout<<"Input second(rub):"<<std::endl;
         scanf("%ГҐ",&second);
    }
 
    void Cost()
    {
        rez=first*second;
        std::cout <<" / Total=" << rez << std::endl;
    }
 
    void Dysplay()
    {
        //std::cout << "time="<<first<<"min. / 1 min="<<second<<std::endl;
        printf("time=%d",first);
        printf(" / 1 min= %.2f",second);
    }
 
    int GetFirst() const
    {
         return first;
    }
 
    float GetSecond() const
    {
         return second;
    }
};
 
int main()
{
    TLaba1 labal;
 
    labal.SetFirst();
    labal.SetSecond();
    labal.Dysplay();
    labal.Cost();
    labal.GetFirst();
    labal.GetSecond();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 11:57     Реализовать класс с двумя скрытыми полями first и second
Посмотрите здесь:

C++ Создать класс с двумя полями и конструктором
15. Создать класс LongLong для работы с целыми числами. Число должно быть представлено двумя полями.Реализовать арифметические операции C++
C++ Реализовать класс с двумя скрытыми полями first и second
C++ Создайте класс Array с двумя полями: указатель на массив целых чисел и размер массива
C++ Массив из структур с двумя целочисленными полями
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
29.10.2012, 12:44     Реализовать класс с двумя скрытыми полями first и second #2
Цитата Сообщение от Own3D Посмотреть сообщение
– методы задания значений SetFirst и SetSecond. Методы должны контролировать значения аргументов на корректность;
Не стоит воспринимать задание значений так буквально, что именно в этих методах должен осуществляться ввод значений. Методы SetFirst и SetSecond должны просто проверить на правильность передаваемый им аргумент и установить поля объекта. Ввод значений должен быть вне класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool TLaba1::SetFirst(unsigned int First)
{
    if ( ! IsValidFirst(First) )
        return false;
    first = First;
    return true;
}
 
// ... где-то в программе
cin >> f;
TLaba1 labaObj;
if ( ! labaObj.SetFirst(f) ) {  /* fail ! */ }
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 12:55  [ТС]     Реализовать класс с двумя скрытыми полями first и second #3
а не могли бы вы "прикрутить" это в программу? или если есть возможность, написать готовый код решения? просто я буквально пару дней как взялся за изучение языка, и практически все вещи и как ими оперировать мне не понятны..
Кликните здесь для просмотра всего текста
этот идиотский план обучения в нашем универе, когда 2 года учили нафиг никому не нужный паскаль, а теперь нати получите задания на сессию на с++, но изучите его сами.. бредово..(
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
29.10.2012, 13:00     Реализовать класс с двумя скрытыми полями first и second #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
/*
ООП – Задание № 1
 Реализовать класс с двумя скрытыми полями first и second. Во классе должны при-
 сутствовать следующие методы:
 – методы задания значений SetFirst и SetSecond. Методы должны контролировать
 значения аргументов на корректность;
 – методы возврата данных GetFirst и GetSecond;
 – вывод на экран текущих значений полей Display.
 Реализовать внешнюю функцию с именем Make_{mun}, где mun — тип реализуемой
 структуры. Функция должна получать в качестве аргументов значения для полей структу-
 ры и возвращать структуру требуемого типа. При передаче ошибочных параметров следует
 выводить сообщение и заканчивать работу.
 Вариант 15
 Поле first — целое положительное число, продолжительность телефонного разговора в
 минутах; поле second — дробное положительное число, стоимость одной минуты в рублях.
 Реализовать метод Cost — вычисление общей стоимости разговора.
*/
 
#include <iostream>
 
class TLaba1
{
private:
    int first;
    double second;
public:
    bool SetFirst(int First)
    {
        if (First < 0)
            return false;
        first = First;
        return true;
    }
    bool SetSecond(double Second)
    {
        if (Second < 0)
            return false;
        second = Second;
        return true;
    }
    int GetFirst(void) const { return first; }
    double GetSecond(void) const { return second; }
    double Cost(void) const { return second * first; }
    void Display(void) const
    {
        std::cout << "Количество минут: " << first << '\n' <<
            "Стоимость 1 минуты: " << second << '\n' <<
            "Стоимосто разговора: " << Cost() << '\n';
    }
};
 
TLaba1 make_Laba1(int Minutes, double Price)
{
    TLaba1 talk;
    if (!talk.SetFirst(Minutes) || !talk.SetSecond(Price))
        std::cout << "Параметры не верны!" << '\n';
    return talk;
}
 
int main(void)
{
    setlocale(0, "rus");
    TLaba1 talk1 = make_Laba1(25, 1.02);
    TLaba1 talk2 = make_Laba1(-15, 3.1);
    TLaba1 talk3 = make_Laba1(32, 6.5);
    talk1.Display();
    talk2.Display();
    talk3.Display();
    system("pause");
}
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 13:13  [ТС]     Реализовать класс с двумя скрытыми полями first и second #5
Цитата Сообщение от John Prick Посмотреть сообщение
Ну я бы сделал как-то так. Криво, конечно, но для первого раза сойдёт.
тут 1 ошибочка, систем не объявлена, или что то такое)
Реализовать класс с двумя скрытыми полями first и second
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
29.10.2012, 13:37     Реализовать класс с двумя скрытыми полями first и second #6
Попробуй подключить
C++
1
#include <stdlib.h>
Она вроде бы там объявлена.
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 14:19  [ТС]     Реализовать класс с двумя скрытыми полями first и second #7
John Prick, спасибо, ошибка пропала) возникли еще 2 вопроса, вот то что на скрине отмечено красным- это я так понял передача параметров? так продолжительность разговора не может же быть отрицательной, должно выдаваться сообщение о неверных параметрах. а оно почему то в самом начале напечаталось(выд. зеленым), а когда параметры не верные-результат все равно посчитался..
Реализовать класс с двумя скрытыми полями first и second
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
29.10.2012, 14:42     Реализовать класс с двумя скрытыми полями first и second #8
Ну это и есть та кривизна, о которой я говорил. Но вообще, в самом задании не сказано, как должен быть организован класс при передаче ему неверных значений, поэтому в данной реализации в классе лежит "мусор".

Чтобы сообщения о неверных параметрах было там, где надо:
C++
1
2
3
4
5
6
7
8
9
10
11
int main(void)
{
    setlocale(0, "rus");
    TLaba1 talk1 = make_Laba1(25, 1.02);
    talk1.Display();
    TLaba1 talk2 = make_Laba1(-15, 3.1);
    talk2.Display();    
    TLaba1 talk3 = make_Laba1(32, 6.5);
    talk3.Display();
    system("pause");
}
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 15:02  [ТС]     Реализовать класс с двумя скрытыми полями first и second #9
John Prick, спасиб, теперь сообщение там где нужно) последняя просьба-как сделать так, что если параметры не верны, он выдавал сообщение, но сам расчет не производил?
Реализовать класс с двумя скрытыми полями first и second
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
29.10.2012, 15:33     Реализовать класс с двумя скрытыми полями first и second #10
А в такой реализации класса особо никак. Функция должна возвращать объект класса TLaba1, был он инициализирован или нет. Есть лишь возможность ввести некоторые значения, которые будут говорить нам о том, что объект некорретен. Ну например, пусть время разговора == 0 будет признаком этого.
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
TLaba1 make_Laba1(int Minutes, double Price)
{
    TLaba1 talk;
    if (!talk.SetFirst(Minutes) || !talk.SetSecond(Price))
    {
        std::cout << "Параметры не верны!" << std::endl << std::endl;
        talk.SetFirst(0);
        talk.SetSecond(0);
    }
    return talk;
}
 
void MakeAndDisplay(int Minutes, double Price)
{
    TLaba1 talk = make_Laba1(Minutes, Price);
    if (talk.GetFirst() != 0)
        talk.Display();
}
 
int main(void)
{
    setlocale(0, "rus");
    MakeAndDisplay(25, 1.02);
    MakeAndDisplay(-15, 3.1);
    MakeAndDisplay(32, 6.5);
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 15:48     Реализовать класс с двумя скрытыми полями first и second
Еще ссылки по теме:

C++ Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда
Класс с двумя полями C++
C++ Создать класс и класс-потомок с полями

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

Или воспользуйтесь поиском по форуму:
Own3D
 Аватар для Own3D
121 / 121 / 37
Регистрация: 29.10.2011
Сообщений: 308
29.10.2012, 15:48  [ТС]     Реализовать класс с двумя скрытыми полями first и second #11
John Prick, честно говоря не особо понял сообщение в сленге с++, но теперь работает так как нужно) большое спасибо за помощь!) качаю видео курсы.. таких лаб у меня еще 5 штук..( и дальше сложнее..
Yandex
Объявления
29.10.2012, 15:48     Реализовать класс с двумя скрытыми полями first и second
Ответ Создать тему
Опции темы

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