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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Error LNK 2019. VS 2010 http://www.cyberforum.ru/cpp-beginners/thread532833.html
Решил написать программу - суть: попытка создания заготовки для меню. смысл этой проги - тупо выводить на экран 11111111111 00000000000 00000000000 и т.п. если нажато S - то на строчку вниз перемещаются 1
C++ Может ли шахматный конь перейти в указанную клетку доски? Собственно условие такое, задаются начальные и конечные координаты от 1 до 8 (шахматная доска). И если шахматная фигура конь может так пойти, значит вывести тру, иначе фолс. Если кто не знаком с шахматами конь ходит буквой Г две клетки в одну сторону и загибает одну клетку в другую. Проблема с ифом, не нравится ему #include <iostream> #include <conio.h> #include <math.h> #include <stdio.h>... 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
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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;
}
 
Текущее время: 02:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru