Присвоить с помощью цикла имена карт в колоде - 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[]
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д