• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

10 Rundom Cards Для Игры В Покер

  • Автор темы Blond
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Blond

ДОбрый день. подскажите пожалуйста, пытаюсь выбрать из колоды в 52 карты 10 не повторяющихся (но выходит верно только одна) остальные вообще не понимаю как получаются

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct card{
int value;
char suit;
};
struct board{
struct card deck[52];
};
struct hend{
struct card hend[10];
};
int main(){
struct board b;
struct hend a;
int i =1;
int counter = 1;
int counter2 = 1;
int counter3 = 1;
int counter4 = 1;
int temp;
for(i=0; i< 52; i++){
if(i<13){
b.deck[i].value = counter;
b.deck[i].suit = 'c';
counter++;
}
else if(i<26){
b.deck[i].value = counter2;
b.deck[i].suit = 'd';
counter2++;
}
else if(i<39){
b.deck[i].value = counter3;
b.deck[i].suit = 'h';
counter3++;
}
else if(i<52){
b.deck[i].value = counter4;
b.deck[i].suit = 's';
counter4++;
}
}
srand(time(NULL));
for(i=0; i<10; i++){
temp = rand()%52+1;
if(b.deck[temp].value != 0){
a.hend[i].value = b.deck[temp].value;
a.hend[i].suit = b.deck[temp].suit;
b.deck[temp].value = 0;
b.deck[temp].suit = NULL;
break;
}
}
for(i=0; i< 10; i++){
printf("Card Value: %d Suit: %c \n", a.hend[i].value, a.hend[i].suit);
}
return 0;
}

Спасибо!
 
R

rrrFer

#include <vector>
#include <iostream>
#include <algorithm>
#include <ctime>
int main() {
std::vector<int> p;

srand(time(0));
for (int i = 0, value; i < 10;) {
value = rand() % 52;
if (p.end() == std::find(p.begin(), p.end(), value))
p.push_back(value), ++i;
}

for (auto it = p.begin(); it != p.end(); ++it)
std::cout << *it << " ";
}
почините теги кода
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!