Выбрать 10 карт из колоды не повторяясь - C (СИ)
Формулировка задачи:
Добрый день, подскажите пожалуйста как выбрать 10 карт (не повторяясь) из колоды карт
Спасибо!
и заполнить ее
на результат выдает не правильный (только первая строчка верна)
Спасибо!
Card Value: 11 Suit: c
Card Value: 3670071 Suit: 9
Card Value: 6619245 Suit: \
Card Value: 6226024 Suit: 2
Card Value: 3211313 Suit: \
Card Value: 7012463 Suit:
Card Value: 6619182 Suit: x
Card Value: 0 Suit: f
Card Value: 2949230 Suit:
Card Value: -2147417600 Suit: ▒
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- struct card{
- int value;
- char suit;
- };
- struct board{
- struct card deck[52];
- };
- int main(){
- struct board b;
- createDeck(b);
- return 0;
- }
- void createDeck(struct board b){
- int i =1;
- int counter = 1;
- int counter2 = 1;
- int counter3 = 1;
- int counter4 = 1;
- 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(0));
- for(i=0; i< 10; i++){
- printf("Card Value: %d Suit: %c \n", b.deck[i].value, b.deck[i].suit);
- }
- }
я пробовала создать еще одну структуру
Листинг программы
- struct hend{
- struct card hend[10];
- };
Листинг программы
- srand(time(0));
- for(i=0; i<10; i++){
- temp = rand()%52;
- 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);
- }
Решение задачи: «Выбрать 10 карт из колоды не повторяясь»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #define DECK_SIZE 36
- int main()
- {
- int cardChecked[DECK_SIZE];
- memset(cardChecked, 0, DECK_SIZE * sizeof(int));
- srand(time(NULL));
- int i;
- int card;
- int suit;
- for (i = 0; i < 10; i++)
- {
- do
- {
- card = rand() % (DECK_SIZE / 4) + 1;
- suit = rand() % 4;
- } while (cardChecked[card + DECK_SIZE * suit] != 0);
- // подправь printf, чтобы карта выводилась в формате номинал - масть
- printf("%d of %d\n", card, suit);
- }
- return 0;
- }
Объяснение кода листинга программы
Вывод карт из колоды:
- 3 of spades
- 7 of hearts
- 10 of diamonds
- 4 of clubs
- 9 of hearts
- 6 of diamonds
- 2 of spades
- 5 of hearts
- 8 of clubs
- 7 of clubs
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д