Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2009, 20:09   #1
and277
Пользователь
 
Регистрация: 07.03.2008
Сообщений: 31
По умолчанию Конструктор для изменения размерности массива

Вообщем выполняю одно вроде бы простое упражнение.

Суть такова: создать класс с полем целочисл-ый Массив 10*10 . Нужно осуществить безопасность в плане границ массива.

По условию задачи конструктор должен позволять определить реальный размер массива (например сделать меньше чем 10*10). Не юзать STL и указатели.

PHP код:
#include <iostream>
using namespace std;

class 
matrix {
private:
    
int X;
    
int Y;
    
int mas[10][10];
public:
    
matrix(): X(10), Y(10)
    { }
    
matrix(int xint y): X(x), Y(y)
    { }
    
void putel(intintint);
    
int getel(intint);
};
void matrix::putel(int xint yint znach) {
    if((
>= 0) && (X) && (>= 0) && (Y))
        
mas[x][y] = znach;
    else 
cout << "\nВы вышли за границы массива... Запись невозможна!\n";
}

int matrix::getel(int xint y) {
    if((
>= 0) && (X) && (>= 0) && (Y))
        return 
mas[x][y];
    else  {
        
cout << "\nВы вышли за границы массива... Чтение невозможно!\n";
        return 
0;
        }
    }

int main() {
    
matrix m2;
    
m2.putel(998);
    
cout << m2.getel(99) << endl;


    
matrix m1(34);
    
int temp 12345;
    
m1.putel(11temp);
    
temp m1.getel(11);
    
cout << "temp: " << temp << endl;
    
m1.putel(74temp);
    
temp m1.getel(74);


    return 
0;

Логично было бы в классе написать так int mas[X][Y] и далее изменять X И Y конструктором... Но дело в том что так не получается сделать - реально не компилируется.
Пробывал static члены - то же не получается.
Что сделать можно? Так как реально размер конструктором я поменять не могу.

Последний раз редактировалось and277; 10.08.2009 в 20:20.
and277 вне форума Ответить с цитированием
Старый 10.08.2009, 20:34   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Мне кажется, что задачу вы решили. Без указателей массив в куче не получится создать, хотя и тут уже указатель в неявном виде используется. Можно еще на шаблонах замутить, но лучше преподу так покажите, ибо в условии задачи сказано, что 10х10, т.е. всё честно как бы)
pu4koff вне форума Ответить с цитированием
Старый 10.08.2009, 20:47   #3
and277
Пользователь
 
Регистрация: 07.03.2008
Сообщений: 31
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Мне кажется, что задачу вы решили. Без указателей массив в куче не получится создать, хотя и тут уже указатель в неявном виде используется. Можно еще на шаблонах замутить, но лучше преподу так покажите, ибо в условии задачи сказано, что 10х10, т.е. всё честно как бы)
Спасибо. Это упражнение из Лафоре. Просто прорешиваю для себя.

Как я понял, кроме того что вы сказали, не возможно использовать переменную в размерности массива. Это должна быть константа. А раз - это константа то никакой метод или конструктор класса не изменит эту константу.
and277 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для изменения цвета заливки rootking Microsoft Office Excel 6 11.01.2011 10:38
программа для изменения размера локального диска фЁдОр Софт 9 04.12.2008 12:51
увеличение размерности массива Лучик_света Общие вопросы .NET 3 25.10.2008 04:36
nLite - программа для перекомпановки, расширения или изменения дистрибутива ОС Alar Windows 4 24.10.2008 12:31
Диассемблиравание для изменения строковых данных без знания ассемблера GanGSISoft Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 06.10.2008 20:35