Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 176
#1

В классе инициализировать массив, в классе создать функцию вывода массива на экран

31.08.2014, 23:24. Просмотров 1265. Ответов 5
Метки нет (Все метки)

Прошу помоши с выводом данных, которые содержаться в массиве, на экраy:
Задача: В классе инициализировать массив, в классе создать функцию вывода массива на экран.

Прошу подсказать ГДЕ В ЛОГИКЕ ПРИНЦИПИАЛЬНАЯ ОШИБКА ?
не пишите ответ как код, пожалуйста, я хочу сам понять где косяк. Спасибо если все разжуете в подробностях, а если не разжуете, тогда все равно сапсибо)

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
//создать массивы данных и перегрузить их операторы = + -.
#include <iostream>
#include <cstdlib>
using namespace std;
 
 
class T
{
private:
    int A1[3];
 
public:
    T()
    {
        for(int i=0; i<3; ++i)
        {   
            A1[i]=rand()%3000;
            cout    << A1[i] << "test const" << endl;
            cout    << endl;
        };
    };
 
    void show()
    {
        for(int i=0; i<3;++i)
        {
 
            cout    << "A["<< i <<"] = " << A1[i] << endl;
        };
    };
};
int main()
{
    T Ar1[3];
    T Ar2[3];
    T Ar3[3];
    
    Ar1[3].show();
    Ar2[3].show();
 
 
    return 0;
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2014, 23:24
Ответы с готовыми решениями:

Как инициализировать массив в классе
private: static char const figury_={0,4,0,0, 0,1,0,3, ...

Как инициализировать статический константный массив в классе?
Например, есть класс, которой статически хранит виды себя. Не могу понять как...

Как инициализировать вектор в классе?
#pragma once #include &lt;iostream&gt; using namespace std; #include &lt;string&gt;...

Массив указателей на функцию в классе
Доброго всем времени суток.Пожалуйста помогите разобраться. #include...

Как в main() создать указатель на функцию, которая находится в классе?
В этом примере как определить указатель на функцию F()? class A { public:...

5
tehnar5
31 / 31 / 19
Регистрация: 03.05.2011
Сообщений: 84
31.08.2014, 23:30 #2
Смотрите, принципиальных косяка у Вас два:
1)Вы создаете массив Ar1 экземпляров класса T, в котором будет три экземпляра, в каждом - массив из трех элементов. Как я понимаю, Вы хотите лишь один экземпляр класса, тогда достаточно просто написать T Ar1.
2)Если это все же массив, то нельзя забывать про то, что нумерация идет с нуля, то есть, если Вы объявляете T Ar1[3], то Вы можете обращаться к Ar[0], Ar[1], Ar[2], но не к Ar[3]
1
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 176
31.08.2014, 23:50  [ТС] #3
сейчас на реализацию в мейне не стоит смотреть. это только черновик я буду создавать 2 разных массива класса Т. оба будут проинициализированны внутри класса. третий массив будет результатом суммы значений первых двух.
Сейчас интересует как правильно передать передать массив в класс. И как вывести массив, созданный внутри класса, на экран.
0
КОП
471 / 364 / 117
Регистрация: 15.08.2010
Сообщений: 996
Завершенные тесты: 1
01.09.2014, 00:23 #4
Цитата Сообщение от MMt Посмотреть сообщение
как правильно передать передать массив в класс
Тогда стоит использовать динамические массивы внутри класса (операторы new, delete[]) и передавать нужно будет в специальный метод класса указатель на массив.
Со статическим тоже прокатит, но придется резервировать много места и все равно будут возможны ошибки.
Цитата Сообщение от MMt Посмотреть сообщение
И как вывести массив
У вас уже есть вывод. В случае динамического массива надо лишь будет заменить 3 на размер массива.

Добавлено через 1 минуту
Забыл добавить, очень смущает название класса, так как ассоциируется с шаблонами.
0
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 176
01.09.2014, 11:44  [ТС] #5
с динамичесским массивом не работал. вопрос о скорости работы не стоит, о памяти и т.д. тоже. не могу понять из чего состоит конструктор и что и как туда предавать... сейчас самые примитивные варианты надо
0
AlexVRud
477 / 189 / 72
Регистрация: 04.07.2014
Сообщений: 535
01.09.2014, 13:40 #6
Первое замечание, int A[3] имеет тип int*. Это пришло из Си в С++. Соответственно если хотим передать его то нужен будет метод
C++
1
void setA(int *A, int size);
с возвратом, всё сложнее. Если написать
C++
1
int* getA() { return A1; };
Ты передашь ссылку на внутренние данные класса, и не передашь размер массива. Т.е. это всё печально.
Как следствие надо будет передавать результат через параметры, выделять память через new, и не забывать удалять полученный массив через delete в вызывающем коде.
Если размер у тебя всегда будет фиксированным, можно обернуть результат в структуру:
C++
1
2
3
4
5
6
7
8
9
10
struct Data {
  int A[3];
};
 
class ...
private:
  Data A1;
public:
  Data getData() { return A1; };
...
Но тут тоже есть много подводных камней.
Если всё таки размер должен быть разным, то в С++ следует использовать std::vector:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vector>
 
...
private:
  std::vector<int> A1;
...
  std::vector<int> getA() { return A1; };
  void setA(std::vector<int> A) { A1=A; };
...
 
int main() {
...
  std::vector<int> A;
  for(int i=0; i<10; ++i) { A.push_back(rand()%3000) ; }
  T Ar1;
  Ar1.setA(A);
...
1
01.09.2014, 13:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2014, 13:40

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

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
У меня есть основной класс с названием Root один из его членов наследует...

Создать массив в базовом абстрактном классе, и его передать функциям производных классов
есть полностью абстрактный (виртуальный) класс. там все функции виртуальные и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru