Присвоить с помощью цикла имена карт в колоде - C (СИ)

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

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

Помогите пожалуйста, не получается создать колоду в цикле не хочет присваивать
Листинг программы
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. using namespace std;
  6. struct Cards
  7. {
  8. char *suit;
  9. char *face;
  10. };
  11. void main()
  12. {
  13. int N;
  14. SetConsoleOutputCP(1251);
  15. cout << "Введите размер колоды (36 или 52):";
  16. cin>>N;
  17. Cards *pDeck= new Cards[N];
  18. static const char *Psuit[4]={"Червы","Бубны","Трефы","Пики"};
  19. static const char *Pface[9]={"Туз","6","7","8","9","10","Валет","Дама","Король"};
  20. for (int i = 0; i < N; i++){
  21. pDeck[i].suit=new char[256];
  22. pDeck[i].suit=Psuit[i%4];
  23. pDeck[i].face=Pface[i%9];
  24. }
  25. delete []pDeck;
  26. }

Решение задачи: «Присвоить с помощью цикла имена карт в колоде»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include<string>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. struct Card
  10. {
  11.    char* _pSuit;
  12.    char* _pFace;
  13. };
  14.  
  15. static const char* pSuit[4] =
  16. {
  17.    "Червы",
  18.    "Бубны",
  19.    "Трефы",
  20.    "Пики"
  21. };
  22.  
  23. static const char* pFace[9] =
  24. {
  25.    "Туз",
  26.    "6",
  27.    "7",
  28.    "8",
  29.    "9",
  30.    "10",
  31.    "Валет",
  32.    "Дама",
  33.    "Король"
  34. };
  35.  
  36. int main(int argc,char** argv)
  37. {
  38.    int N = 0;
  39.  
  40.    SetConsoleOutputCP(1251);
  41.  
  42.    cout << "Введите размер колоды (36 или 52):";
  43.    cin >> N;
  44.  
  45.    Card*   pDeck = new Card[N];
  46.  
  47.    for (int ii = 0; ii < N; ++ii)
  48.    {
  49.       pDeck[ii]._pSuit = (char*)pSuit[ii % 4];
  50.       pDeck[ii]._pFace = (char*)pFace[ii % 9];
  51.  
  52.       printf("%2d:%-10s%-10s\n",ii,pDeck[ii]._pSuit,pDeck[ii]._pFace);
  53.    }
  54.  
  55.    getch();
  56.  
  57.    delete[] pDeck;
  58.  
  59.    return 0;
  60. }

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

В этом коде создается структура данных Card, которая содержит два указателя на строки - _pSuit и _pFace. Эти строки представляют собой масти и номиналы игральных карт соответственно. Затем определяются две константные массивы строк - pSuit и pFace, которые содержат все возможные масти и номиналы карт. Функция main запрашивает у пользователя размер колоды (36 или 52) и создает динамический массив типа Card этого размера. Затем происходит итерация по всем элементам массива pDeck. Внутри цикла каждый элемент массива инициализируется указателями на случайную масть и номинал из соответствующих массивов. После этого выводится на экран информация о карте с помощью функции printf. В конце программы вызывается функция getch для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу. И наконец, динамический массив pDeck освобождается с помощью функции delete[].

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


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

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

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

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

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

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