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

Создать абстрактный класс Array с методами сложения Add() и поэлементной обработки forEach() - C++

Восстановить пароль Регистрация
 
Милена77756
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 11
21.11.2013, 00:12     Создать абстрактный класс Array с методами сложения Add() и поэлементной обработки forEach() #1
11. Создать абстрактный класс Array с методами сложения Add() и поэлементной обработки forEach(). Реальзовать производные классы AndArray и OrArray. В первом сложение реализуется как пересечение множеств, а поэлементная обрабоотка – извлечение квадратного корня. Во втором классе – сложение как объединение, а поэлементная обработка – поиск синуса. Помогите пожалуйста исправить что не так((Функции не могу дописать.
And 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
#include "AndArray.h"
 
void AndArray::add(Array& a)
{
   int tmpsize = 0;
   int * tmp = new int[arraySize];
 
   for (int i = 0; i < a.size; i++)
   {
       int t = a[i];
       if( Exists(t))
       {
           tmp[tmpsize] = t;
           tmpsize++;
       }
 
   }
 
   delete aptr;
 
   aptr = new int[tmpsize];
   arraySize = tmpsize;
}
 
void AndArray::forEach()
{
    for (int i = 0; i < arraySize; i++)
        cout << sqrt(aptr[i]) << " ";
}

And Array h
C++
1
2
3
4
5
6
7
8
9
10
#include "Array.h"
 
class AndArray : public Array
{
public:
    AndArray(int n) : Array(n) {}
 
    void add(Array&);
    void forEach();
};


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
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
#include  "Array.h" 
 
Array::Array(int s = 1) 
{ 
    if (s < 1) s = -s;
    int digit = s, size = 0;
    for (; digit > 0; size++)
        digit /= 10;
 
    arraySize = size;       
    aptr = new int[size];
    digit = s;
    for (int count = size-1; count >= 0; count--){
        int k = digit % 10;
        digit /= 10;
        *(aptr + count)  = k;
    }
} 
 
Array::Array(Array &obj) 
{ 
    arraySize =  obj.arraySize;         
    aptr  = new  int  [arraySize];       
    for(int count = 0; count  < arraySize; count++)
        *(aptr +  count) = *(obj.aptr + count); 
}
 
int 
Array::operator[](int i)
{
    if((i >=0 ) && (i < arraySize))
    {
        return aptr[i];
    }
 
    return 0;
}
 
bool 
Array::Exists(int a)
{
    for (int i = 0; i < arraySize; i++)
    {
        if (aptr[i] == a)
            return true;
    }
 
    return false;
}
 
 
void Array::resize()
{
    int *temp = new int [arraySize];
    for(int i = 0; i  < arraySize; i++) 
        temp[i] = aptr[i];
 
    arraySize++;
    delete[] aptr;
 
    aptr  = new  int [arraySize];
 
    for(int i = 0; i  < arraySize; i++) 
        aptr[i] = temp[i];
}
 
Array::~Array()     
{                           
    if  (arraySize > 0) 
        delete []  aptr; 
}
 
int Array::size() 
{ 
    return arraySize;
}



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
23
24
25
#ifndef ARRAY_H
#define ARRAY_H
 
#include "Libs.h"
 
class Array 
{ 
protected: 
    int  *aptr;                         // Pointer  to  the  array
    int  arraySize;                     // Holds  the  array  size 
 
    void resize();
 
    bool Exists(int a);
public: 
    Array(int);                         // Constructor 
    Array(Array &);                     // Copy  constructor 
 
    ~Array();                           // Destructor 
    int size();
    int operator[](int);
    virtual void add(Array&)=0;
    virtual void forEach()=0;
}; 
#endif




Libs cpp
C++
1
2
3
4
5
6
#include <sstream>
#include <iostream>
#include <cmath>
#include <conio.h>
 
using namespace std;


MAin
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
#include "OrArray.h"
#include "AndArray.h"
 
int main()
{
    OrArray a(3142);
 
    a.forEach();
 
    AndArray b(23123);
 
    b.forEach();
 
    int k;
    cin >> k;
    return 0;
}

Or Array cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "OrArray.h"
 
 
void OrArray::add(Array& a)
{
    
}
 
void OrArray::forEach()
{
    for (int i = 0; i < arraySize; i++)
        cout << sin(aptr[i]) << " ";
}

Or Array h
C++
1
2
3
4
5
6
7
8
9
10
11
#include "Array.h"
#include <cmath>
 
class OrArray : public Array
{
public:
    OrArray(int n) : Array(n) {}
 
    void add(Array&);
    void forEach();
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 00:12     Создать абстрактный класс Array с методами сложения Add() и поэлементной обработки forEach()
Посмотрите здесь:

Создать абстрактный класс C++
Создать абстрактный класс - млекопитающие C++
C++ 1) Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, выводящим информацию о фигуре на экран
C++ задача на абстрактные классы (создать абстрактный базовый класс с виртуальными методами вычисления ф-ции y=f(x) в заданной точке х)
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема C++
Создать абстрактный класс с общими полями и методами. В производных классах перегрузить чисто виртуальную функцию - общая стоимость всех изделий C++
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы C++
C++ Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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