Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 12:59   #1
Creimi69
 
Регистрация: 11.05.2014
Сообщений: 4
По умолчанию Определить оператор

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

Код:
#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
Код:
#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
Код:
#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
Код:
#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
Код:
#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;
}
Creimi69 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условный оператор,оператор цикла и массив Klark73 Microsoft Office Excel 1 19.12.2011 17:09
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 12:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24