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

Нужна головная программа для класса Array - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задана матрица размером NxM. Найти k - количество http://www.cyberforum.ru/cpp-beginners/thread698445.html
Задана матрица размером NxM.Найти k - количество особых элементов матрицы,считая элемент особым,если он больше суммы остальных элементов своего столбца. Для задания матрицы использовать указатель на указатель(двойной указатель) и динамическое выделение памяти.Заранее спасибо.
C++ Сумма цифп произвольного натурального числа Рассмотрим произвольное натуральное число и найдем сумму его цифр, затем сумму цифр полученного числа и так далее, пока не получим однозначное число. Назовем это число циф-ровым корнем. Требуется для заданного N (N<10100) найти его цифровой корень. http://www.cyberforum.ru/cpp-beginners/thread698427.html
C++ Получить последовательность b1,b2,…,bN из нулей и единиц в матрице.Решение на с++
Даны натуральное число N, действительное число Х, действительная матрица, размер N*2N. Получить последовательность b1,b2,…,bN из нулей и единиц, где В(I)=1, если элементы i-ой строки матрицы не превосходят Х, и b(i)=0 в противном случае. Добавлено через 5 часов 10 минут помогите решить задачу пожалуйста...:help:
C++ Если у данного натурального четырехзначного числа все цифры одинаковые, то найти их сумму, в противном случае их произведение
помогите найти программный код пожалуйста
C++ В цикле сравнение текущего или предыдущего значения http://www.cyberforum.ru/cpp-beginners/thread698420.html
Всем привет, задание таково: Составить программу, которая бы для введенного натурального числа N (1 < N <=1000000100) выводила список его простых множителей с учетом их кратности. Простые множители с учетом их кратности должны выводиться в виде пар n m (где n – количество множителей, m – значение множителя) в порядке возрастания значений множетелей. То есть, Пример ввода: 4 Пример вывода:...
C++ Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо нет вывода корней, не рассмотрены различные случаи и тд. #include <conio.h> #include <math.h> #include <iostream> #include <fstream> using namespace std; double func(double x) { //return (x * x * x - x - 1);//уравнение return (x * x * x + 2 * x * x + 3 * x + 5); подробнее

Показать сообщение отдельно
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
15.11.2012, 22:22     Нужна головная программа для класса Array
Anna1993, как я уже и сказал, помимо синтаксических ошибок из первого поста, у вас имеется целый ряд другого рода ошибок. Для начала неплохо было бы оформить сам класс следующим образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Array
{
private:
    int* a;
    int m;
    
public:    
    explicit Array(int nm = 1, int t = 1, int d = 10); 
    Array(const int* b, int k);
    Array(const Array& b);
    
    ~Array();
    
    Array operator + (const Array& b) const;
    Array& operator = (const Array& b);
    
    int& operator [] (int k);
    const int& operator [] (int k) const;
    
    bool operator == (const Array& b) const;
    void print() const;
};
Добавлено через 1 час 0 минут
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
Array::~Array()
{
    delete[] a; // проверка на NULL не нужна
}
 
// т.к. перменная d у вас не используется вообще, рискну предположить, что это верхняя граница используемая при генерации случ. чисел)
Array::Array(int nm, int t, int d)
{    
    a = new int[nm];
    m = nm;
    
    switch(t)
    {
    case 1:
        a[0] = rand() % d;
        for(int i = 1; i < m; i++)                    
            a[i] = a[i - 1] + rand() % d;        
        break;
        
    case 2:
        a[m - 1] = rand() % d;
        for(int i = m - 2; i >= 0; i--)                    
            a[i] = a[i + 1] + rand() % d;        
        break;
        
    default: // вариант по умолчанию
        for(int i = 0; i < m; i++)
            a[i] = rand() % d;    
    }
}
 
Array::Array(const Array& b)
{    
    a = new int[b.m];
    m = b.m;
    
    for(int i = 0; i < m; i++)
        a[i] = b.a[i];
}
 
Array::Array(const int* b, int k)
{    
    a = new int[k];
    m = k;
    
    for(int i = 0; i < m; i++)
        a[i] = b[i];
}
Добавлено через 1 час 0 минут
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
Array& Array::operator = (const Array& b)
{
    // проверяем не происходит ли попытка присвоить объект самому себе
    if(&b != this)
    {    
        delete[] a;
 
        // обнуляем указатель(если этого не сделать, то при возникновении исключения, 
        // (которое в случае нехватки памяти, может быть сгенерировано в следующей строке)
        // в деструкторе объекта память освободится повторно
        a = NULL;
        
        a = new int[b.m];
        m = b.m;
        
        for(int i = 0; i < m; i++)
            a[i] = b.a[i];       
    }
 
    return *this;
}
 
int& Array::operator [] (int k)
{
    if(k < 0 || k >= m) 
    {
        char error_msg[100];
        sprintf(error_msg, "Index %d za granicami massiva", k);
        throw std::out_of_range(error_msg);
    }
 
    return a[k];
}
 
const int& Array::operator [] (int k) const
{
    if(k < 0 || k >= m) 
    {
        // exit при работе с классами и спользовать нельзя, генерируем исключение
        char error_msg[100];
        sprintf(error_msg, "Index %d za granicami massiva", k);
        throw std::out_of_range(error_msg);
    }
 
    return a[k];
}
 
bool Array::operator == (const Array& b) const
{       
    if(m == b.m)
    {
        for(int i = 0; i < m; i++)
            if(a[i] != b.a[i])            
                return false;
        
        return true;
    }
    
    return false;
}
 
void Array::print() const
{        
    for(int i = 0; i < m; i++)
        printf("%d ", a[i]);
    printf("\n");
}
Цитата Сообщение от Anna1993 Посмотреть сообщение
Array Array::operator+(Array&b)
{
* * Array c(m+b.m,0);
* * int i,j,k;
* * for(i=0, j=0, k=0; i<m && j<b.m; k++)
* * * * if(a[i]<=b[j]) c[k]=a[i++];
* * * * else c[k]=b[j++];
* * * * c[k++]=a[i++];
* * while(j<b.m)
* * * * c[k++]=b[j++];
* * return c;
}
здесь не совсем понятно, что происходит...
 
Текущее время: 12:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru