Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
#1

Можно ли как-то инициализировать массив? - C++

03.12.2011, 23:10. Просмотров 840. Ответов 17
Метки нет (Все метки)

Можно ли как-то инициализировать массив ar?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class digit
{
    int a, b;
public:
    digit (int a_, int b_)
    {
        a=a_;
        b=b_;
    }
};
 
class Array
{
    digit ar [10];
public:
    Array()
    {
        ...
    };
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 23:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли как-то инициализировать массив? (C++):

Можно ли инициализировать динамический массив не используя цикл? - C++
Когда создавали статический массив, можно было сделать так: int array={1,5,14,23,32,45,67}; Можно ли такое же сделать с динамическим...

Как (можно ли) инициализировать переменную в структуре? - C++
Как пример struct cifri { char one="ONE"; }; Почему так нельзя и как можно?

Нюансы работы со строками: как в C++ можно объявлять и инициализировать строки? - C++
Добрый день! Подскажите пожалуйста, как в 17-ой строке присвоить слово? Один символ присваивается, но со словом и тем более предложением...

Как инициализировать массив переменной - C++
Всем доброго времени суток! у меня возникла проблема, мне нужно инициализировать статический массив с помощью переменной, т.е. пользователь...

Как инициализировать массив чисел в С++? - C++
Помогите пожалуйста, проблема следующая: в классе Eleve нужно инициализировать массив чисел (оценки) так, чтобы при создании класса он...

Как инициализировать такой массив - C++
Нужно в проге(консольное приложение Win32) испоьзовать массив таких размеров double massiv_resultatov={0}; просто так я не смог его...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
03.12.2011, 23:22 #2
frostua, ну тебе стоит добавить set и get методы в digit (или сделать класс Array другом digit и обращаться к a и b в digit напрямую) так как просто вызвать конструктор digit не получиться. Хотя друг как-то решал подобную проблему и даже решил её, но работало это ТОЛЬКО в vs2008 (в 2010 уже не запускалось) и использовало какие-то ms хитрости.
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
03.12.2011, 23:29 #3
frostua, можно как угодно. Но лучше это делать исходя из вашей задачи, которая не известна. Что дальше хотите сделать?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
03.12.2011, 23:29 #4
Ещё можно вот так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class digit
{
        int a, b;
public:
        digit (int a_, int b_)
        {
                a=a_;
                b=b_;
        }
};
 
class Array
{
        digit *ar[10];
 
public:
        Array()
        {
            for (int i=0;i<10;i++)
             ar[i]=new digit(i,i*2);
        }
};
1
Kidasov
77 / 77 / 12
Регистрация: 02.12.2011
Сообщений: 965
Записей в блоге: 3
03.12.2011, 23:56 #5
А почему бы не наследовать класс Digit?

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
#include <iostream>
using namespace std;
 
class digit
{
public:
  int a;
  int b;
  void setDigit(int a_, int b_) { a = a_; b = b_; }
};
 
class Array : public digit
{
  digit ar [10];
public:
  Array();
  void show();
        
};
 
Array::Array()
{
  for (int i=0; i<10; i++)
  {
    ar[i].setDigit(i,i+1);
  }
}
 
void Array :: show()
{
  for (int i=0; i<10; i++)
  {
    cout<<"array["<<i<<"] = "<<ar[i].a<<"  "<<ar[i].b<<"\n";
  }
}
 
int main()
{
  Array a;
  a.show();
  return 0;
}
0
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
04.12.2011, 00:09  [ТС] #6
Цитата Сообщение от sandye51 Посмотреть сообщение
frostua, можно как угодно. Но лучше это делать исходя из вашей задачи, которая не известна. Что дальше хотите сделать?
Вообще хочу реализовать игру блэк джек, здесь я привел только схему, будут ещё классы игрок и диллер, карта может инициализироваться только один раз, вот основной код
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
#include <iostream>
using namespace std;
 
class Card
{
    int Suit;//масть от 3 до 6 включительно
    int Rank;//ранг карты от 1 до 13 включительно, 11-13 - картинки
public:
    Card(int suit, int rank)
    { 
        if (suit<3 || suit>6){cout<<"Error, Suit shold be in the enterval 3 - 6"; exit(1);}
        else Suit=suit;
        if (rank<1 || rank>13){cout<<"Error, Rank shold be in the enterval 1 - 13"; exit(1);}
        else Rank=rank;
    }
    void Show()
    {
        cout<<(char)Suit;
        if (Rank>1 && Rank<11) cout<<Rank;
        else if (Rank==1) cout<<(char)65;
        else if (Rank==11) cout<<(char)74;
        else if (Rank==12) cout<<(char)81;
        else if (Rank==13) cout<<(char)75;
    }
    int Get_rank () {return Rank;}
 
};
 
class Deck
{
    enum {N = 52};
    Card deck[N];
public:
 
    Deck()
    {
        int n=0;
        for (int i=3; i<=6; i++)
            for (int j=1; j<=13; j++)
                deck[n++]=
};
0
easybudda
Модератор
Эксперт CЭксперт С++
9626 / 5574 / 947
Регистрация: 25.07.2009
Сообщений: 10,709
04.12.2011, 00:14 #7
Вот так отработало, но это не совсем то, что нужно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class Digit {
    int a;
    int b;
public:
    Digit(int a_ = 0, int b_ = 0) : a(a_), b(b_) {}
    friend std::ostream & operator << ( std::ostream & ost, const Digit & d ) {
        ost << "A = " << d.a << " B = " << d.b << std::endl;
        return ost;
    }
};
 
int main(){
    const int COUNT(3);
    Digit * arr[COUNT] = { new Digit(13, 69), new Digit(11, 14), new Digit(33, 66) };
    for ( int i = 0; i < COUNT; ++i )
        std::cout << *arr[i];
    return 0;
}
0
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
04.12.2011, 00:19  [ТС] #8
Gepar
да идея с массивом указателей неплохая

Добавлено через 3 минуты
ладно, оставлю до завтра, выберу один из вариантов, если есть какие-то ещё идеи пишите. Спасибо за ответы
0
Bers
Заблокирован
04.12.2011, 00:25 #9
C++
1
2
3
4
5
6
7
8
9
10
11
class digit
{
    int a, b;
public:
    digit (int a_=0, int b_=0):a(a_), b(b_) { }
};
 
class Array
{
    digit ar[10]; //а и b для каждого элемента будут равны нулям
};
0
sandye51
04.12.2011, 00:34
  #10

Не по теме:

easybudda, а удалять память кто будет)

0
Bers
Заблокирован
04.12.2011, 01:15 #11
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
class digit
{
    int a, b;
public:
    digit (int a_=0, int b_=0){    set(a_,b_);  } //чуть чуть поправил. 
                                                  //Так медленнее, 
                                                  //но лучше в сопровождении
 
    void set(int a_, int b_) { a=a_; b=b_; }
};
 
class Array
{
    digit ar[2];
public:
    Array()
    {
        //можно так:
        ar[0]= digit(1, 2);
        ar[1]= digit(3, 6);
 
        //А можно так (так быстрее):
        ar[0].set(22,22);
        ar[1].set(33,3);
    }
};
0
easybudda
Модератор
Эксперт CЭксперт С++
9626 / 5574 / 947
Регистрация: 25.07.2009
Сообщений: 10,709
04.12.2011, 01:17 #12
Bers, это хорошо, когда весь массив должен значениями по умолчанию инициализироваться. Задача была, на сколько я понял, инициализировать элементы разными значениями.

sandye51, по-хорошему надо бы, конечно, но раз уж сразу после вывода всё веселье и заканчивается, решил - чёрт с ней, сама освободится...
0
Bers
04.12.2011, 01:19
  #13

Не по теме:

easybudda, так я ж выложил вариант, когда нужно модифицировать массив

0
easybudda
04.12.2011, 01:44
  #14

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
easybudda, так я ж выложил вариант, когда нужно модифицировать массив
Ну это к первому вашему посту было.

0
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
04.12.2011, 11:54  [ТС] #15
Bers
а почему не хочет работать если не указывать значения по умолчанию в конструкторе digit (int a_=0, int b_=0)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 11:54
Привет! Вот еще темы с ответами:

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

Как инициализировать массив ссылок? - C++
//--------------------------------------------------------------------------- #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #pragma hdrstop ...

Как инициализировать двумерный массив? - C++
подскажите как инициализировать двумерный массив long long int mass;

Как инициализировать массив в dll ? - C++
Экспериментирую с dll. Сделал графическую функцию, которая рассчитывает расстояние между точками в цикле. Хочу оптимизировать ее, чтоб...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.12.2011, 11:54
Ответ Создать тему
Опции темы

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