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

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

22.09.2013, 10:46. Показов 2137. Ответов 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,033
Записей в блоге: 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,033
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru