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

Определить класс ограниченного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error LNK 2019. VS 2010 http://www.cyberforum.ru/cpp-beginners/thread532833.html
Решил написать программу - суть: попытка создания заготовки для меню. смысл этой проги - тупо выводить на экран 11111111111 00000000000 00000000000 и т.п. если нажато S - то на строчку...
C++ Может ли шахматный конь перейти в указанную клетку доски? Собственно условие такое, задаются начальные и конечные координаты от 1 до 8 (шахматная доска). И если шахматная фигура конь может так пойти, значит вывести тру, иначе фолс. Если кто не знаком с... http://www.cyberforum.ru/cpp-beginners/thread532832.html
Упорядочить массив В(5,4) по невозрастанию элементов третей строки C++
Упорядочить массив В(5,4) по невозрастанию элементов третей строки. вывести получившийся массив, найти минимальный элемент массива
Оптимальный алгоритм рисования линий C++
1) Является ли алгоритм рисования линии перебором точек оптимальным? for(float i=Xmin, j; i<=Xmax; i+=0.001) { j = k*i + b; drawpixel(i, j); } 2) если нет, то какой был бы наиболее...
C++ Взять матрицу 3 на 3 и заменить столбец... http://www.cyberforum.ru/cpp-beginners/thread532814.html
Взять матрицу 3 на 3 и заменить столбец, номер которого вводится с клавиатуры, на единицу.
C++ Дан массив А(4,4). Сформировать массив В(4) из среднеарифметических значений элементов в каждой строке. Дан массив А(4,4). Сформировать массив В(4) из среднеарифметических значений элементов в каждой строке. Посмотрите пожалуйста... Добавлено через 22 минуты Кто-нибудь помогите....))) подробнее

Показать сообщение отдельно
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
28.03.2012, 15:26
Цитата Сообщение от Isya Shmonder Посмотреть сообщение
Такое задание по ООП.
Определить класс ограниченного массива вещественных чисел, индексы элементов которого могут принимать отрицательные значения. Пример объявления массива и обращения к его элементам.
Mdouble x (-30, 50);
x[-30] = 1.2; x [0] =0. ; x [50] = -1
Заранее благодарен.
А если первый параметр в конструкторе задать положительным, отсчёт индексов должен будет вестись от нуля, или от этого параметра?
C++
1
2
Mdouble x (30,50);//Разрешено ли так?
x[0]=1.2;//А так разрешено, если задано id начала массива=30

Короче, вот ответ:
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
#include <iostream> 
#include <fstream>
using namespace std;
class signed_array{
protected:
    int start, end;
    float* data;
public:
    signed_array(int s=0, int e=0){
        if (s<=e) {
            start=s;
            end=e;
            data=new float[e-s];
        }
        else {
            start=end=0;
            cerr<<"array["<<s<<"]["<<e<<"] is invalid"<<endl;
            data=new float[0];
        }
        if (!data) cerr<<"out of memory"<<endl;
    }
    int get_start(){return start;}
    int get_end(){return end;}
    signed_array(signed_array& src){
        int i;
        start=src.start;
        end=src.end;
        data=new float[end-start];
        if (!data) {cerr<<"out of memory"<<endl;}
        for (i=0; i<end-start; i++) data[i]=src.data[i];
    }
    signed_array& operator = (signed_array& src){
        if (data) delete[] data;
        int i;
        start=src.start;
        end=src.end;
        data=new float[end-start];
        if (!data) cerr<<"out of memory"<<endl;
        for (i=0; i<end-start; i++) data[i]=src.data[i];
    }
    ~signed_array(){
        if (data) delete[] data;
    }
    float& operator [] ( int index ) const{
        if ((index>=start)&&(index<=end)) return (data[index-start]);
        return (data[0]);
    };
 
};
int main(){
    char c;
    signed_array test(-5, 5);
    test[-4]=2.0;
    test[-2]=0.5;
    test[-3]=test[-4]+test[-2];
    cout<<"test[-4]="<<test[-2]<<endl;
    cout<<"test[-3]="<<test[-4]<<endl;
    cout<<"test[-2]="<<test[-3]<<endl;
    cin>>c;
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru