Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический размер массива 
V
    Опции темы
infinitefreedom
Дата 19.6.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Добры день, есть класс объявления защищенного массива, как можно сделать так, чтоб можно было указать размер массива пользователем с клавиатуры? Заранее спасибо

Код

#include "stdafx.h"
#include <iostream>
#include "conio.h"

using namespace std;

int const size = 20;

class Massiv{
public:
    int arr[size];
    void getElement(int num){if(num>=0 && num<=size)cout<<"Element "<<num<<" massiva="<<arr[num]; else cout<<"Obrashenie k nedopustimomy elementy\n";}
    void setElement(int num, int value){if(num>=0 && num<=size)arr[num] = value; else cout<<"Obrashenie k nedopustimomy elementy\n";}
};

int main()
{
    Massiv A;
    int n,val;
    cout<<"V kakoi element massiva proizvesti zapis?\n";
    cin>>n;
    cout<<"Kakoe chislo tuda zapisat?\n";
    cin>>val;
    A.setElement(n,val);
    A.getElement(n);
    getch();
    return 0;
} 

PM MAIL WWW   Вверх
toxx
Дата 19.6.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



infinitefreedom
тебе наверно нужен не  Динамический размер массива, а динамический массив.
PM MAIL   Вверх
infinitefreedom
Дата 19.6.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Код

void setSize(int size){int *arr[size] = new int;}


пробовал дописать как-то так, но компилятор ругается, по разному уже пробовал, никак пока не получается
PM MAIL WWW   Вверх
toxx
Дата 19.6.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



infinitefreedom
определи в приватной части указатель
Код

int *array;

сделай конструктор, который выделяет и зануляет память под массив нужной длинны
Код

array=new int[size];

PM MAIL   Вверх
infinitefreedom
Дата 19.6.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Код

#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;

class Massiv{
private:
    int *arr;
public:
    //void setSize(int size){int *arr[size] = new int;}
    void Massiv(int size) {arr = new int[size];}
    void getElement(int num){if(num>=0 && num<=size)cout<<"Element "<<num<<" massiva="<<arr[num]; else cout<<"Obrashenie k nedopustimomy elementy\n";}
    void setElement(int num, int value){if(num>=0 && num<=size)arr[num] = value; else cout<<"Obrashenie k nedopustimomy elementy\n";}
};
int main()
{
    Massiv A(50);
    int n,val;
    cout<<"V kakoi element massiva proizvesti zapis?\n";
    cin>>n;
    cout<<"Kakoe chislo tuda zapisat?\n";
    cin>>val;
    A.setElement(n,val);
    A.getElement(n);
    getch();
    return 0;
} 


получаю ошибку: c:\......\protected_array.cpp(11): error C2380: type(s) preceding 'Massiv' (constructor with return type, or illegal redefinition of current class-name?)

PM MAIL WWW   Вверх
toxx
Дата 19.6.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



infinitefreedom
вам компилятор пишет ошибку, а вы не замечаете.прочитайте про конструкторы и возвращаемые им значения, если таковые есть.
PM MAIL   Вверх
infinitefreedom
Дата 19.6.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Конструктор не возвращает значения, поэтому не могу понять в чем же суть ошибки и что нужно поправить
PM MAIL WWW   Вверх
toxx
Дата 19.6.2010, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



infinitefreedom
так убери void=)



PM MAIL   Вверх
infinitefreedom
Дата 19.6.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Спасибо, разобрался  smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.