Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 94
1

Определить оператор

30.11.2014, 12:32. Показов 556. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в общем в задании сказано,что нужно создать класс массив для хранения целых чисел. Два конструктора для заполнения случайными числами по размеру и через инициализационный список. Методы для определения размера и вывода массива на экран. Определить оператор вывода элемента по индексу. Определить оператор:*= умножение на число каждого элемента массива, если его четность совпадает с аргументом (например, arr *= 2 должно умножить на 2 только четные элементы, а arr *= 3 умножит на 3 только нечетные).
У меня есть выполненное задание для оператора:<< - прокрутка массива вправо на 4 позиций, а вот как сделать с умножение вообще не знаю. Очень нужна помощь.
array.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef ARRAY_H
#define ARRAY_H
#include <algorithm>
 
using namespace std;
 
class Array
{
    int data[100];
    int m_size;
public:
    Array();
    Array(const Array &arr);
    Array(initializer_list<int> c);
    int size();
    void print();
    int operator[] (int idx);
    void operator>> (int t);
 
};
 
#endif // ARRAY_H


mstr.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef MSTR_H
#define MSTR_H
 
/*
 * Пример класса строки.
 * Оператор >> ищет количество вхождений символа С
 */
 
#include <string>
using namespace std;
class MStr
{
    string str;
public:
    MStr(string s): str(s){}
    int operator >>(char c);
};
 
#endif // MSTR_H


array.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "array.h"
#include <algorithm>
#include <iostream>
 
Array::Array(){  //по-умолчанию массив пуст
    m_size = 0;
}
Array::Array(std::initializer_list<int> c){
    m_size = c.size();
    //копируем все значения из списка инициализации
    //в наш массив
    for_each(c.begin(), c.end(),
             //лямбда функция с захватом всего контекста
            [=] (int n) {
              static int idx = 0;
              data[idx++] = n;
            }
    );
}
int Array::size(){
    return m_size;
}
//возвращаем число из массива по индексу
int Array::operator[](int idx){
    return data[idx];
}
void Array::operator>>(int r)
{   //проворачиваем массив вправо на r позиций
    r %= m_size;
    r = m_size - r;
    int n = m_size;     //количество итераций
    int tmp = data[r];  //сохраняем начальный элемент
    int pos = r;        //начинаем с r-элемента
    while(n--){
        data[pos] = data[(pos+r) % m_size];
        pos+=r;
        pos%=m_size;
    }
    data[0] = tmp;      //кладем на место начальный элемент
}
 
void Array::print()
{   //выводим массив на экран
    for(int i = 0; i < m_size; i++){
        cout << data[i] << " ";
    }
    cout << endl;
}


mstr.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
#include "mstr.h"
#include <algorithm>
 
int MStr::operator >>(char c)
{
    int cnt = 0;
    for_each(str.begin(), str.end(), [&](char _){if(c == _) cnt++;});
    return cnt;
}

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
#include <iostream>
#include "array.h"
#include "mstr.h"
using namespace std;
 
int main()
{
  
    Array a({1, 2, 3, 4, 5, 6, 7});
 
    cout << "Элемент 5 = " << a[5] << endl;
 
    cout << "Массив а:" << endl;
    a.print();
    cout << "Прокрутим массив на 4 позиции:" << endl;
    a >> 4;
    a.print();
 
    MStr s("abababdsdfsasasdas");
    cout << (s >> 'a') << endl;
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2014, 12:32
Ответы с готовыми решениями:

Как определить оператор в С++?
Программа для сортировки шелла массива данных по ключу. #include &lt;iostream&gt; enum { maxlen =...

Оператор if: определить, является ли I делителем J и K
Даны три целых положительных числа I, J, K. Определить является ли I делителем J и K.

Определить унарный оператор ++ как дружественную функцию
Есть программа: #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std;...

Как определить оператор += для сложения классов?
Как определить оператор += для сложения классов? class point { public: float x; ...

0
30.11.2014, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2014, 12:32
Помогаю со студенческими работами здесь

Оператор условия. Определить, пересекаются ли заданные кривая и прямая
Определить пересекаются ли кривая y=ax³+bx²+cx+d и прямая y=fx+g. При положительном ответе найти...

Определить тип треугольника используя исключительно оператор switch
Здравствуйте, получил такую задачу. Дан треугольник, данные его стороны, определить его тип...

Используя оператор while определить сумму всех нечетных чисел в диапазоне от 1 до 99
Оператор while

Оператор while: определить порядковый номер первого введенного положительного числа
помогите,пожалуйста,написать программу с while для задачи: определить порядковый номер первого...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru