0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
1

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

31.08.2014, 23:24. Показов 4278. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2014, 23:24
Ответы с готовыми решениями:

В классе Arrs напишите функцию PrintArr3 для вывода двумерного массива массивов
Ребят, нужна помощь с заданием. 1. В классе Arrs напишите функцию PrintArr3 для вывода...

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

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение"
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться ...

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

5
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
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
31.08.2014, 23:50  [ТС] 3
сейчас на реализацию в мейне не стоит смотреть. это только черновик я буду создавать 2 разных массива класса Т. оба будут проинициализированны внутри класса. третий массив будет результатом суммы значений первых двух.
Сейчас интересует как правильно передать передать массив в класс. И как вывести массив, созданный внутри класса, на экран.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,180
01.09.2014, 00:23 4
Цитата Сообщение от MMt Посмотреть сообщение
как правильно передать передать массив в класс
Тогда стоит использовать динамические массивы внутри класса (операторы new, delete[]) и передавать нужно будет в специальный метод класса указатель на массив.
Со статическим тоже прокатит, но придется резервировать много места и все равно будут возможны ошибки.
Цитата Сообщение от MMt Посмотреть сообщение
И как вывести массив
У вас уже есть вывод. В случае динамического массива надо лишь будет заменить 3 на размер массива.

Добавлено через 1 минуту
Забыл добавить, очень смущает название класса, так как ассоциируется с шаблонами.
0
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
01.09.2014, 11:44  [ТС] 5
с динамичесским массивом не работал. вопрос о скорости работы не стоит, о памяти и т.д. тоже. не могу понять из чего состоит конструктор и что и как туда предавать... сейчас самые примитивные варианты надо
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2014, 13:40
Помогаю со студенческими работами здесь

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

Описать функцию в классе Name и создать объект, вызывающий данную функцию.
Описать функцию в классе Name и создать объект, вызывающий данную функцию. Проверить истинность...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru