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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
#1

Объектно ориентированное программирование. - C++

24.05.2011, 19:10. Просмотров 2163. Ответов 22
Метки нет (Все метки)

Нужно решить задачи. Помогите кому это не сложно, очень нужно. Вот задачи:
1) Создание и редактирование классов. Нужно создать класс "арифметическое выражение" с компонентными данными: 1-й аргумент, 2-й аргумент, знак арифметического выражения(перечислимого типа +, -, *,/). Определить компонентные функции: получение каждого элемента класса по отдельности, изменение значения операндов,вычисление значения выражения, вывод на экран в формате "арг1 операция арг2 = результат".
2)Перегрузка стандартных операций. Нужно описать класс "квадрат" с компонентными данными: координаты центра,длина стороны. Перегрузить операции: <<, префиксный --(декремент длины стороны), !=(проверка на неравенство длин сторон квадратов), +=(увеличение на n координат центра).
3)Наследование и полиморфизм.Виртуальные функции. Нужно создать базовый класс - работник и производные классы - служащий с почасовой оплатой, служащий в штате и служащий с процентной ставкой. Определить функцию начисления зарплаты.
4)Шаблоны классов. Нужно разработать шаблон класса где поля могут иметь различные типы данных(некоторые поля могут быть статическими)Предусмотреть наличие в классе указанных методов и перегруженных операций.Название класса - линейное уравнение; поля - коэффициенты, корень; методы - изменение значений полей, вывод в формате (ax+b=0), решение уравнения; перегружаемые операции - <=(сравнение корней двух уравнений), префиксный ++(инкремент каждого коэффициента).
5)Обработка исключений. Необходимо создать три массива a,b и c размерами соответственно n1, n2, n3 (размеры массивов не равны). В массив a занести значения f(x)= 1/(x^2-1), x принадлежит отрезку от -2 до 0, дельта x равен 0,1. Массив b заполнить случайными числами среди них должны быть и отрицательные числа и нули. Массив c формируется согласно правилу ci=ai-!-2/(bi-1+1). Предусмотреть и обработать возникающие при этом исключительные ситуации( деление на ноль, выход за диапазон индексов массива и т.п.).
6)Разработка приложений с использованием типа string. Дана строка слов. Подсчитать,какая из букв встречается наибольшее(наименьшее) количество раз, а так же, общее количество разных букв в строке.
7)Использование стандартной библиотеки шаблонов STL. Сформировать стек из записей: наименование продукта, калорийность единицы продукта, количество продукта. Найти самый калорийный продукт, найти сумму калорийности всех продуктов. В массив перенести только те продукты чья калорийность ниже средней.
Вот все задачи...кто может посмотрите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 19:10     Объектно ориентированное программирование.
Посмотрите здесь:

Объектно-ориентированное программирование C++ - C++
подскажите пожалуйста литературу,видео конал на You tube, или ещо что то для изучения объектно-ориентированное программирование на С++,...

Объектно-ориентированное программирование в С++ ? - C++
Книга Р. Лафоре - Объектно-ориентированное программирование в С++ как вам ?

Объектно-ориентированное программирование - C++
Кто силён и мне поможет? Объектно-ориентированное программирование 1. Объявить класс по приведенному ниже заданию в соответствии с...

Объектно ориентированное программирование - C++
Нужно решить задачи. Помогите кому это не сложно, очень нужно. Вот задачи: 1) Создание и редактирование классов. Нужно создать класс...

Объектно-ориентированное программирование - C++
Составить описание класса одномерных массивов строк, каждая строка которых задается длиной и указателем на выделенную для нее память....

Объектно-ориентированное программирование - C++
Помогите мне отредактировать программу...У меня есть исходники..Склеить нужно.... Класс Данные класса Методы ...

Объектно-ориентированное программирование - C++
На основе объектного подхода создать программу которая рассчитывает значения степенных функций y=sqr(x), корень 3, 4, 5 степеней. В...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.05.2011, 19:25     Объектно ориентированное программирование. #2
это типа лабы за весь семестр?
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
24.05.2011, 20:20  [ТС]     Объектно ориентированное программирование. #3
Ну да...
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
24.05.2011, 23:04     Объектно ориентированное программирование. #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
#include <iostream>
using namespace std;
 
template <class T>
class virazhenie {
 public:
  virazhenie (T a, T b, char znak):a_1(a), b_1(b), znak_1(znak){};        
 
  //Возвращают значения всего и вся
  T set_1 () {return a_1;};
  T set_2 () {return b_1;};
  char set_3 () {return znak_1;};
 
  //Изменяют значения оперендов
  void operand_a (int x) {a_1= x;}
  void operand_b (int y) {b_1= y;}
 
  //Определяют значение
  T znachenie () {
   switch (znak_1) {
    case '+':{ 
     return a_1+ b_1;
    };
    case '*': {
     return a_1* b_1;
    };
    case '-':{ 
     return a_1- b_1;
    };
    case '/': {
     return a_1/ b_1;
    };
   }
  };
  
  //Выводят всю эту херь
  
  void vivod () {
   cout<< set_1()<<set_3()<<set_2()<<"="<< znachenie(); 
  }
 
 
 private:
  T a_1,b_1;
  char znak_1;           
};
 
int main () {
 
 virazhenie<int> vir (3, 4, '*');
 cout<< vir.set_1()<<" "<<vir.set_2()<<" "<<vir.set_3()<< endl;
 
 vir.operand_a (45);
 vir.operand_b (34);
 cout<< vir.set_1()<<" "<<vir.set_2()<<" "<<vir.set_3()<< endl;
 vir.vivod ();
 
 cout<< endl;
 
 virazhenie<double> vir_ (3, 4, '/');
 cout<< vir_.set_1()<<" "<<vir_.set_2()<<" "<<vir_.set_3()<< endl;
 
 vir_.operand_a (45);
 vir_.operand_b (34);
 cout<< vir_.set_1()<<" "<<vir_.set_2()<<" "<<vir_.set_3()<< endl;
 vir_.vivod ();
 
 cout<< endl;
 
 virazhenie<float> vir__ (3, 4, '-');
 cout<< vir__.set_1()<<" "<<vir__.set_2()<<" "<<vir__.set_3()<< endl;
 
 vir__.operand_a (45);
 vir__.operand_b (34);
 cout<< vir__.set_1()<<" "<<vir__.set_2()<<" "<<vir__.set_3()<< endl;
 vir__.vivod ();
 
 getchar ();
 return 0;
}
Добавлено через 54 секунды
Этот хоть задания понятно написал.
Jupiter
24.05.2011, 23:07
  #5

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
Этот хоть задания понятно написал.
правильно перепечатал)

ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.05.2011, 23:19     Объектно ориентированное программирование. #6
Перегрузка стандартных операций. Нужно описать класс "квадрат" с компонентными данными: координаты центра,длина стороны. Перегрузить операции: <<, префиксный --(декремент длины стороны), !=(проверка на неравенство длин сторон квадратов), +=(увеличение на n координат центра).
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
#include <iostream>
 
struct Point
{
    explicit Point(double x_ = 0, double y_ = 0):x(x_), y(y_)
    { 
    }
    double x;
    double y;
};
 
std::ostream& operator <<(std::ostream& os, const Point& pt)
{
    os << "x: " << pt.x << " y: " << pt.y << '\n';
    return os;
}
 
class Square
{
public:
    Square(Point center_, size_t side_length_):center(center_), side_length(side_length_)
    { 
    }
    Square& operator --()
    {
        if(side_length > 0)
           --side_length;
        return *this;
    }
    Square& operator +=(size_t n)
    { 
        side_length += n;
        return *this;
    }
    const Point& getCenter() const {return center;}
    const size_t getLength() const {return side_length;}
private:
   Point center;
   size_t side_length;
};
 
bool operator !=(const Square& first, const Square& second)
{
    return first.getLength() != second.getLength();
}
 
std::ostream& operator <<(std::ostream& os, const Square& sq)
{
    os << "Side length: " << sq.getLength() << '\n';
    os << "Center coords\n" << sq.getCenter() << '\n';
    return os;
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
24.05.2011, 23:36     Объектно ориентированное программирование. #7
Что даёт?
explicit Point(double x_ = 0, double y_ = 0):x(x_), y(y_)
Как я знаю, применяется там, где конструктор с одним параметром
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.05.2011, 23:40     Объектно ориентированное программирование. #8
kravam, Ну а кто мешает здесь вызвать с одним?)
Убери explicit и попробуй вызвать через =.
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
24.05.2011, 23:49     Объектно ориентированное программирование. #9
а ну да
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
25.05.2011, 00:38     Объектно ориентированное программирование. #10
Использование стандартной библиотеки шаблонов STL. Сформировать стек из записей: наименование продукта, калорийность единицы продукта, количество продукта. Найти самый калорийный продукт, найти сумму калорийности всех продуктов. В массив перенести только те продукты чья калорийность ниже средней.
Изврат блин.
Ловите изврат в ответ.

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
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <string>
#include <stack>
#include <deque>
#include <numeric>
#include <vector>
#include <functional>
#include <algorithm>
 
namespace my
{
    template<class T, class container = std::deque<T> >
    class stack:public std::stack<T, container>
    {
    public:
        typedef typename container::iterator iterator;
        typedef typename container::const_iterator const_iterator;
 
        iterator begin() {return c.begin();}
        iterator end() {return c.end();}
        const_iterator begin() const {return c.begin();}
        const_iterator end() const {return c.end();}
    };
}
 
class Product
{
public:
    Product(const std::string& title_,
            double en_price_,
            int numb_):title(title_), en_price(en_price_), numb(numb_)
    {
    }
    const std::string& getTitle() const {return title;}
    double getEnPrice() const {return en_price;}
    int getNumb() const {return numb;}
    void setTitle(const std::string& title_) {title = title_;}
    void setEnPrice(double en_price_) {en_price = en_price_;}
    void setNumb(int numb_) {numb = numb_;}
private:
    std::string title;
    double en_price;
    int numb;
};
 
double operator +(double en_pr, Product prod)
{
    return en_pr + prod.getEnPrice();
}
 
struct EnPricesCompare:public std::binary_function<Product, Product, bool>
{
    result_type operator () (const first_argument_type& first, const second_argument_type& second)
    {
        return first.getEnPrice() < second.getEnPrice();
    }
};
 
template<class StackType>
double enPriceSum(const StackType& stck)
{
    return std::accumulate(stck.begin(), stck.end(), 0.0);
}
 
template<class StackType>
double enPriceMiddle(const StackType& stck)
{
    return enPriceSum(stck) / stck.size();
}
 
template<class StackType>
Product getMax(const StackType& stck)
{
    return *std::max_element(stck.begin(), stck.end(), EnPricesCompare());
}
 
struct EnPriceCompare:public std::unary_function<Product, bool>
{
public:
    EnPriceCompare(double m_p):middle_price(m_p)
    {
    }
    result_type operator () (const argument_type& pr)
    {
        return pr.getEnPrice() < middle_price;
    }
private:
    double middle_price;
};
 
namespace my
{
    template<class InIt, class OutIt, class Pr1>
    inline OutIt copy_if(InIt First, InIt Last, OutIt Dest, Pr1 Pred)
    {
        while(First != Last)
        {
            if(Pred(*First))
            {
                *Dest=*First;
                ++Dest;
            }
            ++First;
        }
        return Dest;
    }
};
 
template<class StackType, class Cont, class Pred>
void copyProducts(const StackType& stck, Cont& cont, Pred pred)
{
    my::copy_if(stck.begin(), stck.end(), std::back_inserter(cont), pred);
}
 
int main()
{
    my::stack<Product> prod_stack;
    prod_stack.push(Product("1", 10, 5));
    prod_stack.push(Product("2", 5, 6));
    prod_stack.push(Product("3", 7, 10));
    Product prod = getMax(prod_stack);
    double en_sum = enPriceSum(prod_stack);
    std::vector<Product> prod_vec;
    copyProducts(prod_stack, prod_vec, EnPriceCompare(enPriceMiddle(prod_stack)));
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
25.05.2011, 17:21     Объектно ориентированное программирование. #11
Объектно ориентированное программирование.
Так всё ничё, но оператор += перегружен для стороны, а надо для центра
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
25.05.2011, 17:26     Объектно ориентированное программирование. #12
kravam, Хм. И правда. Ночь уж была) Не заметил
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
25.05.2011, 18:37     Объектно ориентированное программирование. #13
Третье задание
Вложения
Тип файла: rar rabotnik.rar (111.0 Кб, 14 просмотров)
Nameless One
25.05.2011, 18:57
  #14

Не по теме:

Цитата Сообщение от sheill Посмотреть сообщение
Использование стандартной библиотеки шаблонов STL. Сформировать стек из записей: наименование продукта, калорийность единицы продукта, количество продукта. Найти самый калорийный продукт, найти сумму калорийности всех продуктов. В массив перенести только те продукты чья калорийность ниже средней.
стек для такой задачи - мощно...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2011, 11:59     Объектно ориентированное программирование.
Еще ссылки по теме:

Функции Объектно-ориентированное программирование - C++
Переделать задачу так, чтобы в ней присутствовали функции объектно-ориентированное программирование. То есть использовать классы,...

Объектно-ориентированное программирование: Разработка класса строка - C++
НУЖНА ПОМОЩЬ Разработка класса строка Задание Разработать класс String определив для него методы: • копирования строк,...

объектно-ориентированный анализ,объектно-ориентированное проектирование - C++
Прошу помочь построить диаграмму прециндентов и диаграмму классов,мне необходимо только начало диаграммы или хотя-бы какой-нибудь пример с...

Объектно-ориентированное приложение: "Эмулятор банкомата" - C++
Доброго времени всем! я начал изучать С++ И хотел бы спросить вашей помощи в этом нелёгком труде. Дело в том, что мне нужно сделать...

Объктно-ориентированное программирование. С++ - C++
здравствуйте уважаемые программисты :) в универе задали решить задачки, если будет не трудно, помогите пожалуйста :) задачи: 1. Даны...


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

Или воспользуйтесь поиском по форуму:
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
29.05.2011, 11:59  [ТС]     Объектно ориентированное программирование. #15
ForEveR, Почему то выдает пустое окно...
Yandex
Объявления
29.05.2011, 11:59     Объектно ориентированное программирование.
Ответ Создать тему
Опции темы

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