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

Конструктор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод строк фиксированной длины из входного потока http://www.cyberforum.ru/cpp-beginners/thread22021.html
Задача организовать цикл по входному потоку и вывести полученные getchar'ом символы в виде строк некоторой длины N. Допустим, если длина строки превышает N, тогда печатаем ее с переносом на следующую...
C++ Сформировать список, в котором хранится информация о заболеваниях сотрудников Сформировать список, в котором хранится информация о заболеваниях сотрудников: ФИО, год рождения, заболевание, продолжительность болезни. Определить сотрудников, которые перенесли одно и тоже... http://www.cyberforum.ru/cpp-beginners/thread21976.html
Решение системы уравнений компактным методом исключений C++
На С++ надо решить систему уравнений компактным методом исключений. Элементы матрицы- комплексные числа, введенные в символьной форме. Числа обязательно должны быть представлены структурой. Ввод...
C++ Необходимо создать функцию для обработки символьных рядов
Потрібно створити функцію для обробки символьних рядків. За зразок брати функцію WordIndex(s,n)(Призначення: визначення позиції початку в рядку s слова з номером n) обробки рядків мови C, але не...
C++ ввод-вывод текста http://www.cyberforum.ru/cpp-beginners/thread21933.html
как с помощью массива можно вводить и выводить текст в Си, если в тексте есть пробелы?
C++ Заменить в строках первое слово на другое задание такое: задан текст, содержащий произвольное кол-во строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации(перенос слов не используется).... подробнее

Показать сообщение отдельно
Ammaximus
3 / 3 / 1
Регистрация: 15.01.2009
Сообщений: 26

Конструктор - C++

29.01.2009, 18:12. Просмотров 3303. Ответов 5
Метки (Все метки)

Создать абстрактный тип данных - класс вектор, который имеет указатель на float,
число элементов и переменную состояния. Определить конструктор без параметров,
конструктор с параметром, конструктор с двумя параметрами. Конструктор без
параметров выделяет место для одного элемента и инициализирует его в ноль.
Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует
номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент)
и инициализирует вторым аргументом. Деструктор освобождает память. Определить
функцию, которая присваивает элементу массива некоторое значение (параметр по
умолчанию), функцию которая получает некоторый элемент массива. В переменную
состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы
массива. Определить функцию печати. Определить функции сложения, умножения,
вычитания, которые производят эти арифметические операции с данными этого класса и
встроенного float. Определить методы сравнения: больше, меньше или равно.
Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу
этого класса.
Вот что получилось. программа работает. компилируется, но вылетает во время работы. В чем дело?
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
#include <iostream.h>
 
class  vector {
    float *p;
    int number;
    bool flag;
    static int num_objects;
 
public:
    vector(){
        p=new float[1];
        p[0]=0;
        number=1;
        flag=false;
    }
 
    vector(int num){
        p=new float[num];
        for (int i=0; i<num; i++) p[i]= i;
        number=num;
        flag=false;
    }
 
    vector(int num, float vect){
        p=new float[num];
        for (int i=0; i<num; i++) p[i]=vect;
        number=num;
        flag=false;
    }
    
    ~vector(){
        delete [] p;
    }
    
    void set(int num, float vect){
        if (number<=num) {
            flag=true;
            return;
        }
        p[num]=vect;
        return;
    }
 
    void set(int num){
        if (number<=num) {
            flag=true;
            return;
        }
        p[num]=13; // Значение по умолчанию
        return;
    }
 
    float get(int num){
        if (number<=num) {
            flag=true;
            return 0;
        }
        return p[num];
    }
    void print(int num){
        if (number<=num) {
            flag=true;
            return;
        }
        cout << *(p+num);
    };
 
    void print(){
        for (int i=0; i<number; i++) cout << "  " << *(p+i);
        cout << endl;
    }
 
    void add(vector target_vector, int pos_source, int pos_target){
        this->p[pos_target]+=target_vector.get(pos_source);
    };
 
    void sub(vector target_vector, int pos_source, int pos_target){
        this->p[pos_target]-=target_vector.get(pos_source);
    };
 
    void mul(vector target_vector, int pos_source, int pos_target){
        this->p[pos_target]*=target_vector.get(pos_source);
    };
    int diff(vector target_vector, int pos_source, int pos_target){
        if (this->p[pos_target]>target_vector.get(pos_source)) return 1;
        if (this->p[pos_target]<target_vector.get(pos_source)) return -1;
        return 0;
 
    };
 
 
 
 
};
int main(){
    vector a;
    vector b(7);
    vector c(4,8 );
    b.print();
    b.add(c,1,1);
    b.print();
    b.mul(c,1,1);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru