Присвоить с помощью цикла имена карт в колоде - 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;
}Решение задачи: «Присвоить с помощью цикла имена карт в колоде»
#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[].