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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include<string>
#include <iostream>
 
using namespace std;
 
 
struct Card
{
   char* _pSuit;
   char* _pFace;
};
 
static const char* pSuit[4] =
{
   "Червы",
   "Бубны",
   "Трефы",
   "Пики"
};
 
static const char* pFace[9] =
{
   "Туз",
   "6",
   "7",
   "8",
   "9",
   "10",
   "Валет",
   "Дама",
   "Король"
};
 
int main(int argc,char** argv)
{
   int N = 0;
 
   SetConsoleOutputCP(1251);
 
   cout << "Введите размер колоды (36 или 52):";
   cin >> N;
 
   Card*   pDeck = new Card[N];
 
   for (int ii = 0; ii < N; ++ii)
   {
      pDeck[ii]._pSuit = (char*)pSuit[ii % 4];
      pDeck[ii]._pFace = (char*)pFace[ii % 9];
 
      printf("%2d:%-10s%-10s\n",ii,pDeck[ii]._pSuit,pDeck[ii]._pFace); 
   }
 
   getch();
 
   delete[] pDeck;
 
   return 0;
}

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

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

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


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

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

5   голосов , оценка 4.6 из 5
Похожие ответы