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

Перегрузка оператора [] - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Присваивание указателей, вызов оператора присваивания класса http://www.cyberforum.ru/cpp-beginners/thread806809.html
Если написать StrL **testStr; testStr = new StrL * ; testStr = new StrLBit("100001"); testStr = new StrLBit("0101"); testStr = testStr; bool t = 0; if (testStr == testStr) t = 1; printf...
C++ Передача объекта в метод Объясните пожалуйста,как правильно написать. Есть метод AddMessage() который добавляет сообщение в тему,и есть метод GetMessage() который выводит сообщение на экран. Сам объект класса создаётся уже в... http://www.cyberforum.ru/cpp-beginners/thread806798.html
Перегрузка функций C++
а) по номеру года выдает его название по старо японскому календарю. б) по названию месяца выдает знак Зодиака. Заранее спасибо за помощь.
C++ Работа с конструктором
Всем доброго времени суток. Получил задание по программированию в универе. Писать задание за меня не прошу, нужно лишь уяснить парочку моментов. В общем-с, необходимо создать класс Person с одним...
C++ Задача на тему "Строки" (вывести на экран только предложения, состоящие из заданного количества слов) http://www.cyberforum.ru/cpp-beginners/thread806759.html
написать программу, которая считывает текст из файла и вывыдит на экран только предложения состоящие из задоного количества слов int main(int argc, char *argv) { fstream fp; ...
C++ Ошибка в программе с использованием функций #include <stdio.h>//подключение #include <conio.h>//необходимых #include <locale>//библиотек #include <time.h> void data_input(int *A); //Прототипы функций, в которые копируем предыдущий... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
25.03.2013, 14:21
Starfalll, решается так:
Interval.h
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
#ifndef INTERVAL_H
#define INTERVAL_H
 
#include "BrokenInterval.h"
 
class Interval
{
public:
    Interval(double lower_bound, double upper_bound);
 
    double get_lower_bound() const;
    void set_lower_bound(double lower_bound);
 
    double get_upper_bound() const;
    void set_upper_bound(double upper_bound);
 
    BrokenInterval operator[](int parts_count) const;
 
private:
    double m_lower_bound;
    double m_upper_bound;
};
 
#endif  /* INTERVAL_H */
Interval.cpp
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
#include "Interval.h"
#include "BrokenInterval.h"
 
Interval::Interval(double lower_bound, double upper_bound):
    m_lower_bound(lower_bound),
    m_upper_bound(upper_bound)
{
}
 
double Interval::get_lower_bound() const
{
    return m_lower_bound;
}
 
void Interval::set_lower_bound(double lower_bound)
{
    m_lower_bound = lower_bound;
}
 
double Interval::get_upper_bound() const
{
    return m_upper_bound;
}
 
void Interval::set_upper_bound(double upper_bound)
{
    m_upper_bound = upper_bound;
}
 
BrokenInterval Interval::operator[](int parts_count) const
{
    return BrokenInterval(*this, parts_count);
}
BrokenInterval.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef BROKENINTERVAL_H
#define BROKENINTERVAL_H
 
class Interval;
 
class BrokenInterval
{
public:
    BrokenInterval(const Interval& interval, int parts_count);
 
    Interval operator[](int interval_index) const;
 
private:
    const Interval& m_interval;
          int       m_parts_count;
};
 
#endif  /* BROKENINTERVAL_H */
BrokenInterval.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "BrokenInterval.h"
#include "Interval.h"
 
BrokenInterval::BrokenInterval(const Interval& interval, int parts_count):
    m_interval(interval),
    m_parts_count(parts_count)
{
}
 
Interval BrokenInterval::operator[](int interval_index) const
{
    double lower_bound = m_interval.get_lower_bound();
    double upper_bound = m_interval.get_upper_bound();
 
    double interval_length = (upper_bound - lower_bound) / m_parts_count;
 
    double new_lower_bound = lower_bound + (interval_index - 1) * interval_length;
    double new_upper_bound = new_lower_bound + interval_length;
 
    return Interval(new_lower_bound, new_upper_bound);
}
main.cpp
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
#include <iostream>
 
#include "Interval.h"
 
int main()
{
 
    Interval interval(0.0, 10.0);
    Interval new_interval = interval[5][2];
 
    std::cout << "Interval: ("
              << interval.get_lower_bound()
              << ", "
              << interval.get_upper_bound()
              << ")"
              << std::endl;
 
    std::cout << "New interval: ("
              << new_interval.get_lower_bound()
              << ", "
              << new_interval.get_upper_bound()
              << ")"
              << std::endl;
 
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru