С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220

Можно ли переделать маcсив под вектор?

22.09.2013, 10:46. Показов 2114. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли переделать масив под вектор. Если можно то как подскажите плиз.



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
{
    setlocale(LC_ALL, "rus");
    for (int i = 0; i < 13; i++)
        for (int j = 0; j < 4; j++)
        {
            rank[i] = rand() % 12;
            rank[0] = "2";
            rank[1] = "3";
            rank[2] = "4";
            rank[3] = "5";
            rank[4] = "6";
            rank[5] = "7";
            rank[6] = "8";
            rank[7] = "9";
            rank[8] = "10";
            rank[9] = "Валет";
            rank[10] = "Дама";
            rank[11] = "Король";
            rank[12] = "Туз";
            suit[0] = 6;
            suit[1] = 3;
            suit[2] = 4;
            suit[3] = 5;
            cout << rank[i] << ' ' ;
            cout << suit[j] << ' '<<"\n\n";
        }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2013, 10:46
Ответы с готовыми решениями:

Взломанную игру можно переделать, как под свою?
Взломанную игру можно переделать, как под свою?

Нужен любой тест, который можно переделать под себя
У кого нибудь есть ли готовый тест можете ли скинуть полностью готовый файл? Пробовал сам но ничего не выходит

Можно ли данный код переделать под поиск по дате изменения?
есть такой код, производящий поиск по расширению. Можно ли его переделать как поиск по дате изменения? я как не пытался, либо не...

24
 Аватар для Praktolock
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
22.09.2013, 11:00
А что этот код должен делать, если не секрет?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
22.09.2013, 11:00
C++
1
2
    const char *                r[] = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Валет", "Дама", "Король", "Туз" };
    std::vector <std::string>   rank( r, r + sizeof( r ) / sizeof( r[0] ) );
Остальное по-аналогии.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.09.2013, 11:10
mixon-21, если в том же стиле, то использовать std::vector<std::string> и push_back()
castaway, если компилятор поддерживает, то можно сразу через std::initializer_list
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
22.09.2013, 11:18
Tulosba, в таких постах я специально стараюсь не касаться стандарта С++11, т.к. у многих новичков с ним возникают проблемы.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.09.2013, 11:26
Цитата Сообщение от castaway Посмотреть сообщение
Tulosba, в таких постах я специально стараюсь не касаться стандарта С++11, т.к. у многих новичков с ним возникают проблемы.
Думал уточнить, в каких "таких". А потом присмотрелся к циклу ТС... OMG. Тут надо логику привести в порядок, прежде чем на вектор переходить
0
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220
22.09.2013, 11:57  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
1
2
* * const char ** * * * * * * * r[] = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Валет", "Дама", "Король", "Туз" };
* * std::vector <std::string> * rank( r, r + sizeof( r ) / sizeof( r[0] ) );
Остальное по-аналогии.

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

Добавлено через 1 минуту
Цитата Сообщение от Tulosba Посмотреть сообщение
mixon-21, если в том же стиле, то использовать std::vector<std::string> и push_back()
castaway, если компилятор поддерживает, то можно сразу через std::initializer_list

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
22.09.2013, 12:24
Цитата Сообщение от mixon-21 Посмотреть сообщение
по аналогии неполучается
Дай нам знать, когда сочтешь нужным показать как ты пробовал.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
22.09.2013, 12:25
Цитата Сообщение от mixon-21 Посмотреть сообщение
по аналогии неполучается . Вектор должен быть двухмерный чтобы выводило карту и масть. как его сделать двух мерным
В первом посте "хочу вектор" и только в 7-м "вектор должен быть двух мерным"
Стрельбой по бегущей мишени заниматься неинтересно (мало ли что всплывет в 15-й, 25 постах...)
1
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220
22.09.2013, 12:45  [ТС]
Цитата Сообщение от zer0mail Посмотреть сообщение
В первом посте "хочу вектор" и только в 7-м "вектор должен быть двух мерным"
Стрельбой по бегущей мишени заниматься неинтересно (мало ли что всплывет в 15-й, 25 постах...)
в первом посте масив двумерный а вектор будет одномерным????
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.09.2013, 12:52
Цитата Сообщение от mixon-21 Посмотреть сообщение
в первом посте масив двумерный а вектор будет одномерным?
Где он двумерный?

Добавлено через 1 минуту
Цитата Сообщение от mixon-21 Посмотреть сообщение
rank[i] = rand() % 12;
здесь его элементу присваивается int
Цитата Сообщение от mixon-21 Посмотреть сообщение
rank[0] = "2";
здесь присваивается char*

Вообще какой-то странный массив не понятно чего.
Цикл вообще черт пойми зачем, покуда и куда
1
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
22.09.2013, 16:27
Объявить двумерный вектор не проблема
C++
1
std::vector<std::vector <std::string> > CardDeck;
Главная проблема в том, что ты хочешь получить в результате. Если ты хочешь, чтобы у тебя в двумерном векторе записывались и масть и название карты, то тебе нужно привести всё к одному типу. Либо массив будет строкового (string или char * например), либо целочисленного int. Если же хочешь, чтоб у тебя масть и цена карты были разные типы, то тебе нужна структура. Например:
C++
1
2
3
4
5
struct card
{
std::string rank;
int suit;
};
В этом случае будет достаточно одномерного вектора.
C++
1
std::vector<card> deck
1
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220
22.09.2013, 18:41  [ТС]
тип у меня один что suit что rank = string

подскажите правильно создал вектор

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
Card::Card()
{
    setlocale(LC_ALL, "rus");
    std::vector<card> card;
    for (int i = 0; i < 13; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            rank[0] = "2";
            rank[1] = "3";
            rank[2] = "4";
            rank[3] = "5";
            rank[4] = "6";
            rank[5] = "7";
            rank[6] = "8";
            rank[7] = "9";
            rank[8] = "10";
            rank[9] = "Валет";
            rank[10] = "Дама";
            rank[11] = "Король";
            rank[12] = "Туз";
            suit[0] = 6;
            suit[1] = 3;
            suit[2] = 4;
            suit[3] = 5;
 
            cout << rank[i]<<suit[j] << endl;
    }
}
}
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
22.09.2013, 23:24
mixon-21, честно говоря, не вижу, что rank и suit одного типа. rank присваиваются строки, а suit числа. В любом случае, вектор ты создал неправильно. В скобках <...> указывается тип данных, а после них имя переменной. vector - это не тип данных, как int, float или char. vector - это шаблон, для которого ты можешь указывать любой тип данных. Так вот ты обозначаешь и тип данных и имя переменной одним идентификатором. Скорей всего компилятор на это обругается. Правильно это будет сделать так. Объявляешь структуру
C++
1
2
3
4
5
struct CardStruc
{
  string rank;
  int suit;
};
Объявляешь vector
C++
1
vector<CardStruc> card;
Для того, чтобы добавить элемент в конец вектора используй метод push_back, если вставить куда-нибудь в середину - insert. Обращение к элементам вектора также как и в обычном массиве, т. е. по индексу в квадратных скобках. Вот пример добавления карты
C++
1
2
CardStruc temp={"туз", 5};
card.push_back(temp);
А вот так, например ты можешь узнать цену карты:
C++
1
card[0].rank;
Надеюсь стало понятней.
1
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220
22.09.2013, 23:33  [ТС]
В принцыпе да но как мне создать целую колоду карт из 52 штук????
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 00:29
mixon-21, например, для одномерного вектора это будет так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    vector<CardStruc> card;
    string rank;
    int suit;
    for (int i=0; i<52; i++){
        CardStruc temp={rank, suit};
Есть другой вариант:
[CPP]    vector<CardStruc> card(52);
    string rank;
    int suit;
    for (int i=0; i<52; i++){
        CardStruc temp={rank, suit};
        card[i]=temp;
    }
card.push_back(temp);
}[/CPP]
В rank читаешь значения либо из своего массива rank[], либо можешь в какой-нибудь текстовый файл загнать. Также и со suit.
Можно, кстати, организовать и двухмерный вектор, но это будет несколько сложнее
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
23.09.2013, 00:42
Цитата Сообщение от mixon-21 Посмотреть сообщение
целую колоду карт из 52 штук?
угрюмый пример:
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
79
80
81
82
83
84
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
 
 
class Card {
public:
   enum SUITS {
      spades , //Пики
      hearts , //Червы
      clubs , //Трефы
      diamonds , //Бубны
   } ;
 
   enum NOMINALS {
      two = 2 , // 2
      threee ,
      four ,
      five ,
      six ,
      seven ,
      eight ,
      nine ,
      ten , //10
      jack , //Валет
      queen , //Дама
      king , //Король
      ace , //Туз
   } ;
   SUITS suit ( ) {
      return mSuit ;
   }
   NOMINALS nominal ( ) {
      return mNominal ;
   }
   Card ( SUITS argSuit , NOMINALS argNominal ) : mSuit ( argSuit ) , mNominal ( argNominal ) {
   }
   std::string to_string ( ) {
      //the NOMINAL of SUIT
      static const std::string suit_names[] = { "spades" , "hearts" , "clubs" , "diamonds" } ;
      static const std::string nominal_names[] = { "none" , "none" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine" , "ten" , "jack" , "quin" , "king" , "ace" } ;
      return "the " + nominal_names [ mNominal ] + " of " + suit_names [ mSuit ];
   }
private:
   SUITS mSuit ;
   NOMINALS mNominal ;
} ;
 
 
class CardDeck {
   std :: vector < Card > deck ;
public:
   CardDeck ( ) {
      recreate ( ) ;
   }
   void recreate ( ) {
      deck.clear ( ) ;
      for ( int i = Card::SUITS::spades ; i <= Card::SUITS::diamonds ; ++i ) {
         for ( int j = Card::NOMINALS::two ; j <= Card::NOMINALS::ace ; ++j )
            deck.push_back ( Card ( Card::SUITS ( i ) , Card::NOMINALS ( j ) ) ) ;
      }
   }
   void shuffle ( ) {
      std :: random_shuffle ( deck.begin ( ) , deck.end ( ) ) ;
   }
   Card operator[] ( size_t index ) const {
      return deck [ index ] ;
   }
   size_t count ( ) {
      return deck.size ( ) ;
   }
} ;
 
 
int main(){
   CardDeck deck ;
   for ( size_t i = 0 ; i < deck.count ( ) ; ++i )
      std :: cout << deck [ i ].to_string ( ) << std :: endl ;
   std::cout << "\n\nafter suffle:\n" ;
   deck.shuffle ( ) ;
   for ( size_t i = 0 ; i < deck.count ( ) ; ++i )
      std :: cout << deck [ i ].to_string ( ) << std :: endl ;
}
1
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 09:06
Что-то у меня второй вариант вставился внутрь первого (немудрено ночью ).
Первый вариант:
C++
1
2
3
4
5
6
7
vector<CardStruc> card;
    string rank;
    int suit;
    for (int i=0; i<52; i++){
        CardStruc temp={rank, suit};
        card.push_back(temp);
    }
Второй вариант:
C++
1
2
3
4
5
6
7
vector<CardStruc> card(52);
    string rank;
    int suit;
    for (int i=0; i<52; i++){
        CardStruc temp={rank, suit};
        card[i]=temp;
    }
Добавлено через 25 минут
Вот вариант с двумерным вектором:
C++
1
2
3
4
5
6
7
8
9
10
vector< vector<CardStruc> > card(4);
    string rank;
    int suit;
    for (int i=0; i<4; i++){
        card[i].resize(13);
        for (int j=0; j<13; j++){
            CardStruc temp={rank, suit};
            card[i][j]=temp;
        }
    }
1
 Аватар для mixon-21
5 / 5 / 3
Регистрация: 05.03.2013
Сообщений: 220
23.09.2013, 09:38  [ТС]
только почему suit int я его создал как string что-бы выводил на экран значок масти и был тогоже типа что и rank.

Всем Огромное спасибо
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 09:59
mixon-21, не принципиально. хочешь string - пожалуйста. В конечном итоге программа всё-таки твоя. Но тогда уж лучше, наверное, char, чтоб меньше памяти занимал. string - это целый класс со переменными и методами. Я думаю, что использовать его ради одного символа целый string нецелесообразно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2013, 09:59
Помогаю со студенческими работами здесь

возможно ли переделать код алгоритма под Borland C переделать под Borland Delphi?
Подскажите возможно ли переделать код алгоритма под Borland C переделать под Borland Delphi? У меня есть исходник алгоритма шифрования SEAL...

Когда DOS был жив, можно ли было переделать windows98 и > драйвера звуковой карты под DOS?
Если я правильно понимаю там прямая запись в порты(если на самом низком уровне) это ведь можно повторить на любой ОС?

Маcсив в качестве необязательного параметра метода
Подскажите, а можно ли загнать значение char symb = { '=', '&amp;' }; в качестве необязательного параметра метода? Типа как в примере: ...

Переделать код через вектор
Нужно сделать код не через строки, а через вектор #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { ...

Можно ли в вектор добавить вектор?
не сложить, а добавить? например, даны такие векторы: std::vector&lt;glm::vec2&gt; myVector; и vector&lt;вот тут какой тип делать?&gt;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru