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

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

Войти
Регистрация
Восстановить пароль
 
 
mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
#1

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

22.09.2013, 10:46. Просмотров 970. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 10:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли переделать маcсив под вектор? (C++):

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

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

Вектор vector<string> переделать в int - C++
Здравствуйте. Подскажите, а то что то совсем запутался Задача следующая создать вектор string наполнить его элементами 123. С этим я...

Маcсив: Не используя других массивов, переставить его элементы в обратном порядке. - C++
Дан массив X целых чисел. Не используя других массивов, переставить его элементы в обратном порядке.

Переделать под C#/C++ - C++
Здравствуйте, нашел в интернете нужную мне задачу, но она на языке, которого я не знаю совсем. Просьба переделать программу под C# или C++....

Переделать под с++ - C++
есть программа, я так понял написана на с, а мне надо на с++ сам я пробовал, но дуб дубом.. желательно еще переделать: убрать ввод данных...

24
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 00:29 #16
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
Эксперт CЭксперт С++
13509 / 7667 / 866
Регистрация: 27.09.2012
Сообщений: 18,864
Записей в блоге: 3
Завершенные тесты: 1
23.09.2013, 00:42 #17
Цитата Сообщение от 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
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 09:06 #18
Что-то у меня второй вариант вставился внутрь первого (немудрено ночью ).
Первый вариант:
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
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
23.09.2013, 09:38  [ТС] #19
только почему suit int я его создал как string что-бы выводил на экран значок масти и был тогоже типа что и rank.

Всем Огромное спасибо
0
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 09:59 #20
mixon-21, не принципиально. хочешь string - пожалуйста. В конечном итоге программа всё-таки твоя. Но тогда уж лучше, наверное, char, чтоб меньше памяти занимал. string - это целый класс со переменными и методами. Я думаю, что использовать его ради одного символа целый string нецелесообразно.
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
23.09.2013, 12:10 #21
Цитата Сообщение от mixon-21 Посмотреть сообщение
Вектор должен быть двухмерный чтобы выводило карту и масть.
Зачем? Нужно 2 вектора, как было 2 массива.
1
mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
23.09.2013, 16:57  [ТС] #22
Цитата Сообщение от lipnev Посмотреть сообщение
mixon-21, не принципиально. хочешь string - пожалуйста. В конечном итоге программа всё-таки твоя. Но тогда уж лучше, наверное, char, чтоб меньше памяти занимал. string - это целый класс со переменными и методами. Я думаю, что использовать его ради одного символа целый string нецелесообразно.
Да ты прав char лутше только названия карт поменять на первые буквы
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
23.09.2013, 17:10 #23
Цитата Сообщение от mixon-21 Посмотреть сообщение
Да ты прав char лутше только названия карт поменять на первые буквы
Чем не угодил char * или (раз уж там вектора) string?

Добавлено через 42 секунды
Кстати, инициализацию лучше из цикла вынести.
0
mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
23.09.2013, 17:30  [ТС] #24
подскажите а как его вывести на экран


C++
1
2
3
4
5
6
7
8
{
    vector<Karta> card(52);
   
    for (int i = 0; i < 52; i++){
        Karta temp = { ranks, suits };
        card[i] = temp; 
    }  
}
0
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
23.09.2013, 18:21 #25
mixon-21, с вектором можно работать также как и с обычным массивом. Вывести на экран:
C++
1
2
3
for (int i = 0; i < 52; i++){
        cout<<card[i].rank<<" "<<card[i].suit<<endl;
    }
1
23.09.2013, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 18:21
Привет! Вот еще темы с ответами:

Написать / переделать под C++ - C++
Всем привет, нуждаюсь в вашей помощи, написать программу с паскаля на c++ Условие:В одномерном массиве, состоящем из n вещественных...

Переделать под указатели - C++
Помогите пожалуйста переделать задачу под указатели... :(вообще не получается... Заранее огромное спасибо.... int main() { int...

переделать под график - C++
это сделано под сетевую диаграмму

Под С++ нужно переделать - C++
while pos(' ',s)&gt;0 do{пока есть пробелы} begin s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово} k:=0; for i:=1 to...


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

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

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