Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Помогите найти ошибку. Ни на что не ругается, просто выдает ошибку. "Необработанное исключение по адресу 0x6C78ED6C (msvcr110d.dll) в ConsoleApplication1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC." Не понятно почему ругается вообще, ибо код писал сам, и потом сверял по учебнику П.Дейтела. В итоге уже все переписал слово в слово как в книге и все равно ошибка.
Листинг программы
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7. struct card
  8. {
  9. char*face;
  10. char*suit;
  11. };
  12. typedef struct card Card;
  13. void fillDeck(Card*, char *[], char *[]);
  14. void fillDeck(Card *wDeck, char *wface[], char *wsuit[])
  15. {
  16. int i;
  17. for(i=0;i<52;i++)
  18. wDeck[i].face=wface[i%13];
  19. wDeck[i].suit=wsuit[i/13];
  20. }
  21. void shuffleDeck(Card*);
  22. void shuffleDeck(Card *wDeck)
  23. {
  24. Card buf;
  25. int i,j;
  26. for(i=0;i<52;i++)
  27. j=rand()%52;
  28. buf=wDeck[i];
  29. wDeck[i]=wDeck[j];
  30. wDeck[j]=buf;
  31. }
  32. void dealDeck(Card*);
  33. void dealDeck(Card *wDeck)
  34. {
  35. int i;
  36. for(i=0;i<52;i++)
  37. {
  38. printf("%d",i);
  39. printf("%s of %s%c",wDeck[i].face, wDeck[i].suit,
  40. (i+1)%2 ? '\t' : '\n');
  41. }
  42. }
  43.  
  44. int main()
  45. {
  46. srand((unsigned)time(NULL));
  47. Card Deck[52];
  48. char *face[]={"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine","Jack" "Queen", "King"};
  49. char *suit[]={"Spades", "Diamonds", "Hearts", "Clubs"};
  50.  
  51. fillDeck(Deck, face, suit);
  52. shuffleDeck(Deck);
  53. dealDeck(Deck);
  54. _getch();
  55. return 0;
  56. }

Решение задачи: «Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу»

textual
Листинг программы
  1. printf("%-4c of %6c",wDeck[i].face, wDeck[i].suit,
  2.          (i+1)%2 ? '\t' : '\n');

Объяснение кода листинга программы

В данном коде выполняется тасовка колоды карт.

  1. printf — функция вывода информации на экран.
  2. %-4c — форматный спецификатор для вывода 1 символа с выравниванием по левому краю.
  3. %6c — форматный спецификатор для вывода 6 символов.
  4. wDeck[i].face — переменная, содержащая информацию о лице карты (туз, король, дама, валет).
  5. wDeck[i].suit — переменная, содержащая информацию о масти карты (червы, бубны, трефы, пики).
  6. (i+1)%2 ? '\t' : '\n' — условное выражение, определяющее символ для вывода: табуляция (\t) или перевод строки (\n) в зависимости от остатка от деления (i+1) на 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы