Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
14 / 14 / 4
Регистрация: 30.10.2012
Сообщений: 463
1

Вывести массив, заданный в классе

08.03.2015, 19:23. Показов 2233. Ответов 16
Метки нет (Все метки)

у меня почему то не выводит массив, я не пойму почему, если ввести вместо і номер какого то из элементов класса то все работает, но целый массив не выводит(
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
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
class Set 
{
private: 
    int  i, a[7];
public: 
        void setSet() 
    {
       for(i=0; i<7; i++)
       {
       cin >> a[i];
       }
          }
    void getSet() 
    {
        cout << "Mas: " << a[i] << " "<<endl;
    }
}; 
 
int  main (int argc, char* argv[])
{
  
    Set objSet; 
    objSet.setSet();
    objSet.getSet();
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2015, 19:23
Ответы с готовыми решениями:

Вывести массив, заданный в классе
Нужно что бы выводило тот же массив что в классе описан, а у меня хз что выводит #include...

Сожмите заданный массив, выбросив каждый второй элемент массива. Вывести на экран заданный и новый массив
Сожмите заданный массив, выбросив каждый второй элемент массива. Вывести на экран заданный и новый...

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

Вывести заданный массив на печать
Нужно вывести в строку, через пробел значения всех элеметов заданного массива в таком порядке:...

16
Модератор
Эксперт С++
11480 / 9398 / 5649
Регистрация: 18.12.2011
Сообщений: 25,108
08.03.2015, 19:37 2
C++
1
2
3
4
5
6
7
 void getSet() 
    {
        cout << "Mas:\n";
        for(i=0; i<7; i++)
           cout << a[i] << " "
        cout<<endl;
    }
0
14 / 14 / 4
Регистрация: 30.10.2012
Сообщений: 463
08.03.2015, 19:49  [ТС] 3
zss, мне нужно что бы в setSet я объявил массив, а через getSet вывел
0
Модератор
Эксперт С++
11480 / 9398 / 5649
Регистрация: 18.12.2011
Сообщений: 25,108
08.03.2015, 20:26 4
А что тогда в моем примере не так?
0
14 / 14 / 4
Регистрация: 30.10.2012
Сообщений: 463
08.03.2015, 20:37  [ТС] 5
zss, так оно одинаковое что в сет что в джет
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
08.03.2015, 20:38 6
Цитата Сообщение от qwer1234 Посмотреть сообщение
джет
гет же.
Где-то я уже видел этот код.
0
Модератор
Эксперт С++
11480 / 9398 / 5649
Регистрация: 18.12.2011
Сообщений: 25,108
08.03.2015, 20:48 7
Лучший ответ Сообщение было отмечено qwer1234 как решение

Решение

Цитата Сообщение от qwer1234 Посмотреть сообщение
так оно одинаковое
C++
1
2
3
4
5
6
7
8
9
10
11
12
void setSet() 
    {
       for(i=0; i<7; i++)
          cin >> a[i];      // ввод
    }
void getSet() 
    {
        cout << "Mas:\n";
        for(i=0; i<7; i++)
           cout << a[i] << " "    // Вывод
        cout<<endl;
    }
1
14 / 14 / 4
Регистрация: 30.10.2012
Сообщений: 463
09.03.2015, 01:07  [ТС] 8
zss, большое спасибо, я еще немного почитал литературу и понял почему все так)
0
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
09.03.2015, 07:30 9

Немножко приведу в порядок
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
#include <iostream>
using namespace std;
 
const int SIZE = 7;
 
class Foo
{
public:
    Foo() : i(666) {
        for(int i=0; i<SIZE;++i) arr[i] = i;
    }
 
    void set(const int i_) { i = i_; }
    void set(const int arr_[SIZE]) {
        for(int i=0; i<SIZE;++i) arr[i] = arr_[i];
    }
 
    int get(const int index) const {
         return arr[index];
    }
 
    int get() const { return i; }
 
    void print() {
        for(int i=0; i<SIZE;++i)
            cout << arr[i] << " ";
    }
 
 
private:
    int  i;
    int arr[SIZE];
};
 
int  main (int argc, char* argv[])
{
    Foo obj;
    cout << obj.get() << endl;
    cout << obj.get(2) << endl;
 
    int arr[SIZE];
    for(int i=0; i<SIZE;++i)
        cin >> arr[i];
 
 
    obj.set(arr);
    obj.print();
 
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
11480 / 9398 / 5649
Регистрация: 18.12.2011
Сообщений: 25,108
09.03.2015, 09:31 10
Kant, Если уж приводить в порядок:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
using namespace std;
class Foo
{
public:
    Foo() : Size(0) 
    {
        arr=NULL;
    }
    Foo(int S) : Size(S) 
    {
        arr=new int[Size];
        for(int i=0;i<Size;i++)arr[i]=0;
    }
    Foo(const Foo& S) : Size(S.Size) 
    {
        arr=new int[Size];
        for(int i=0;i<Size;i++)
            arr[i]=S.arr[i];
    }
    ~Foo(){ if(arr!=NULL)delete[] arr; }
    Foo& operator=(const  Foo& S) 
    {
        if(this==&S)
            return *this;
        if(Size!=S.Size && arr!=NULL)
        {
            delete[] arr;
            arr=NULL;
        }
        if(arr==NULL && S.Size!=0)
            arr=new int[S.Size];
        Size=S.Size;
        for(int i=0;i<Size;i++)
            arr[i]=S.arr[i];
        return *this;
    }
 
    int& operator[](const int index)
    {
         return arr[index];
    }
    void Print() 
    {
        for(int i=0; i<Size;++i)
            cout << arr[i] << " ";
        cout<<endl;
    }
 
 
private:
    int  Size;
    int* arr;
};
 
int  main ()
{
    int N;
    cout<<"N=?";
    cin>>N;
    Foo obj1(N); //  Foo(int S)
    for(int i=0;i<N;i++)
    {
        cout << "Enter "<<i+1<<" value:";
        cin >> obj1[i]; // operator[]
    }
    obj1.Print();
    Foo obj2(obj1); // копиконструктор Foo(const Foo& S)
    Foo obj3=obj1; // копиконструктор Foo(const Foo& S)
    Foo obj4;     //  Foo()
    obj4=obj3;    // operator=
    obj4.Print();
    system("pause");
 
    return 0;
}
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.03.2015, 10:24 11
zss, проверка на null не нужна перед delete
0
Модератор
Эксперт С++
11480 / 9398 / 5649
Регистрация: 18.12.2011
Сообщений: 25,108
09.03.2015, 10:28 12
Нужна, т.к. конструктор по умолчанию Foo(); не выделяет память, а только присваивает NULL.
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.03.2015, 11:16 13
Цитата Сообщение от zss Посмотреть сообщение
а только присваивает NULL.
см. документацию на delete.
Стандарт 5.3.5/2:
... the value of the operand of delete may be a null pointer value ...
Дополнительно, обсуждение на SO:
http://stackoverflow.com/quest... ll-pointer
И в догонку:
If this is a null-pointer, the function does nothing.
отсюда.

Не по теме:

P.S. Кажется уже неоднократно это обсуждалось. Имхо, есть смысл добавить в "Распространенные ошибки", если еще не добавлено.

1
1367 / 590 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
09.03.2015, 11:26 14
Страуструп. Принципы и практика использования С++ глава 17
Удаление нулевого указателя не приводит ни к каким последствиям (так как нулевой указатель не ссылается ни на один объект), поэтому эта операция безвредна.
можно и туда посмотреть...
0
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
09.03.2015, 15:17 15
Дык, хотел чтобы попроще. И уже как бы С++11 используется.
0
14 / 14 / 4
Регистрация: 30.10.2012
Сообщений: 463
21.03.2015, 14:25  [ТС] 16
zss, Можете помочь с этим?
1. Создать класс Set, в котором реализовать два метода с названиями setSet и getSet. Первый метод должен принимать на вход множество целых чисел в виде одномерного массива, а второй - возвращать этот массив. Также предусмотреть в классе Set, конструктор, через который можно было бы связывать массив с соответствующим объектом класса Set.
2. Создать класс Operation в котором реализовать методы с названиями: unionSets (объединение множеств), intersectionSets (пересечение множеств), diferenceSets (разность множеств), symmetricDiffSets (симметричная разность множеств).
3. Каждый из вышеуказанных методов должен принимать на вход два объекта класса Set, и повергать соответствующую множество в виде одномерного массива целых чисел.

Вот то до чего смог додуматься я, дальше тупик, не уверен что и это правильно
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
class Set 
{
private: 
    
public: 
    int  i, a[9], A[4], B[5];
 
    void setSet() 
    {
       for(i=0; i<9; i++)
       {
       a[0]=1;
       a[1]=2;
       a[2]=3;
       a[3]=4;
       a[4]=5;
       a[5]=6;
       a[6]=7;
       a[7]=8;
       a[8]=9;
       }
    }
 
    void getSet() 
    {
        cout << "Mas:\n";
        for(i=0; i<9; i++)
        cout << a[i] << " ";
    }
 
 
    Set()
    {
        for(i=0; i<4; i++)
        {
            A[0]=1; A[1]=2; A[2]=3; A[3]=4;
        }
        for(i=4; i<5; i++)
        {
            B[4]=5; B[5]=6; B[6]=7; B[7]=8; B[8]=9;
        }
        cout<<A[i]<<"";
        cout<<B[i]<<"";
    }
}; 
class Operation:public Set 
 {
private: 
    int i, U;
public: 
 
    void unionSets()
    
    {}
 
 
 };
 
 
 
int  main (int argc, char* argv[])
{
    
    Set objSet; 
    objSet.setSet();
    objSet.getSet();
    Operation objOperation;
    objOperation.unionSets();
 
    system("pause");
    return 0;
}
0
zss
21.03.2015, 14:28     Вывести массив, заданный в классе
  #17
 Комментарий модератора 
Создайте для этих вопросов новые темы!
П. 4.4. Правил!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2015, 14:28

Вывести заданный массив на экран
Составить программу которая создаёт и выводит на экран массив такого вида: 0000000 1000001...

Заданный целочисленный массив вывести лесенкой
Заданный целочисленный массив вывести лесенкой, как показано в примере. Входные данные: В...

Вывести заданный массив на экран в виде таблицы
В одномерном массиве данные размещены парами: в первых элементах значения аргумента, во вторых –...

Вывести заданный список с экрана в массив записей
Дан список, содержащий N записей (N100) следующей структуры


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

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

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