mirror of
https://github.com/Kaehvaman/OAIP.git
synced 2025-01-18 08:39:11 +04:00
swap and sort using only ->next
This commit is contained in:
parent
b054eed086
commit
60b625c6b3
@ -306,7 +306,55 @@ void task10() {
|
|||||||
detectRepeats();
|
detectRepeats();
|
||||||
}
|
}
|
||||||
|
|
||||||
void swap(int i, int j) {
|
void swap_by_next(int i, int j) {
|
||||||
|
if (first == NULL) {
|
||||||
|
puts("first == NULL, no swap happened");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (first->next == NULL) {
|
||||||
|
puts("first->next == NULL, no swap happened");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NODE* prev_ptr = first;
|
||||||
|
NODE* ptr = first->next;
|
||||||
|
|
||||||
|
NODE* i_prev = prev_ptr;
|
||||||
|
NODE* i_ptr = ptr;
|
||||||
|
NODE* j_prev = prev_ptr;
|
||||||
|
NODE* j_ptr = ptr;
|
||||||
|
|
||||||
|
int index = 1;
|
||||||
|
while (ptr != NULL) {
|
||||||
|
if (index == i) {
|
||||||
|
i_prev = prev_ptr;
|
||||||
|
i_ptr = ptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
prev_ptr = ptr;
|
||||||
|
ptr = ptr->next;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
prev_ptr = first;
|
||||||
|
ptr = first->next;
|
||||||
|
index = 1;
|
||||||
|
while (ptr != NULL) {
|
||||||
|
if (index == j) {
|
||||||
|
j_prev = prev_ptr;
|
||||||
|
j_ptr = ptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
prev_ptr = ptr;
|
||||||
|
ptr = ptr->next;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
j_prev->next = i_ptr;
|
||||||
|
i_prev->next = j_ptr;
|
||||||
|
NODE* tmp = i_ptr->next;
|
||||||
|
i_ptr->next = j_ptr->next;
|
||||||
|
j_ptr->next = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void swap_by_data(int i, int j) {
|
||||||
NODE* ptr = first;
|
NODE* ptr = first;
|
||||||
int i_data = 0, j_data = 0;
|
int i_data = 0, j_data = 0;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
@ -334,7 +382,39 @@ void swap(int i, int j) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bubbleSort() {
|
NODE* getNode(int index) {
|
||||||
|
NODE* ptr = first;
|
||||||
|
int i = 0;
|
||||||
|
while (ptr != NULL) {
|
||||||
|
if (i == index) {
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
ptr = ptr->next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
puts("Node not found");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void bubbleSort_by_next() {
|
||||||
|
NODE* ptri = first;
|
||||||
|
int i = 0;
|
||||||
|
while (ptri->next != NULL) {
|
||||||
|
int j = 0;
|
||||||
|
NODE* ptrj = first;
|
||||||
|
while (ptrj->next != NULL) {
|
||||||
|
if (ptrj->data > ptrj->next->data) {
|
||||||
|
swap_by_data(j, j + 1);
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
ptrj = getNode(j);
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
ptri = getNode(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void bubbleSort_by_data() {
|
||||||
NODE* ptri = first;
|
NODE* ptri = first;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (ptri->next != NULL) {
|
while (ptri->next != NULL) {
|
||||||
@ -342,7 +422,7 @@ void bubbleSort() {
|
|||||||
int j = 0;
|
int j = 0;
|
||||||
while (ptrj->next != NULL) {
|
while (ptrj->next != NULL) {
|
||||||
if (ptrj->data > ptrj->next->data) {
|
if (ptrj->data > ptrj->next->data) {
|
||||||
swap(j, j + 1);
|
swap_by_data(j, j + 1);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
ptrj = ptrj->next;
|
ptrj = ptrj->next;
|
||||||
@ -356,7 +436,7 @@ void task12() {
|
|||||||
printf("\n====== task12 ======\n");
|
printf("\n====== task12 ======\n");
|
||||||
listTemplate();
|
listTemplate();
|
||||||
printNodeList();
|
printNodeList();
|
||||||
swap(1, 4);
|
swap_by_next(1, 5);
|
||||||
printNodeList();
|
printNodeList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -364,7 +444,7 @@ void task13() {
|
|||||||
printf("\n====== task13 ======\n");
|
printf("\n====== task13 ======\n");
|
||||||
listTemplate();
|
listTemplate();
|
||||||
printNodeList();
|
printNodeList();
|
||||||
bubbleSort();
|
bubbleSort_by_next();
|
||||||
printNodeList();
|
printNodeList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
31
poker/poker.sln
Normal file
31
poker/poker.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.11.35327.3
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "poker", "poker\poker.vcxproj", "{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Release|x64.Build.0 = Release|x64
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{AB8D4365-60B2-44E9-91C8-32FB3EF84F74}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {AF256523-D607-4C77-81D0-0D6057E6CF36}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
354
poker/poker/main.c
Normal file
354
poker/poker/main.c
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
// Программа-пример из приложения B
|
||||||
|
// Руководства по С для новичков, 3-е издание
|
||||||
|
// Файл AppendixBpoker.c
|
||||||
|
/* Программа представляет собой игру «Покер
|
||||||
|
с обменом». Пользователи могут играть так часто,
|
||||||
|
как захотят, делая ставки величиной от 1 до 5.
|
||||||
|
Пользователям выдается по 5 карт, после чего
|
||||||
|
пользователь должен решить, какие карты оставить,
|
||||||
|
а какие заменить. После этого происходит оценка вновь
|
||||||
|
выданных карт — и пользователь получает вознаграждение
|
||||||
|
в зависимости от ценности имеющихся у него на руках
|
||||||
|
карт. Далее программа отображает на экране новый
|
||||||
|
банкролл пользователя, и ему дается возможность
|
||||||
|
продолжить игру */
|
||||||
|
|
||||||
|
// Заголовочные файлы
|
||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <Windows.h>
|
||||||
|
// Объявление двух констант для определения, имеется
|
||||||
|
// ли у пользователя на руках флеш или стрит.
|
||||||
|
#define FALSE 0
|
||||||
|
#define TRUE 1
|
||||||
|
// Прототипы функций
|
||||||
|
void printGreeting();
|
||||||
|
int getBet();
|
||||||
|
char getSuit(int suit);
|
||||||
|
char getRank(int rank);
|
||||||
|
void getFirstHand(int cardRank[], int cardSuit[]);
|
||||||
|
void getFinalHand(int cardRank[], int cardSuit[], int finalRank[], int finalSuit[], int ranksinHand[], int suitsinHand[]);
|
||||||
|
int analyzeHand(int ranksinHand[], int suitsinHand[]);
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
SetConsoleCP(1251);
|
||||||
|
SetConsoleOutputCP(1251);
|
||||||
|
int bet;
|
||||||
|
int bank = 100;
|
||||||
|
int i;
|
||||||
|
int cardRank[5]; // Одно из 13 значений (Туз-Король)
|
||||||
|
int cardSuit[5]; // Одно из 4 значений (для Пик, Бубен, Черв, Треф)
|
||||||
|
int finalRank[5];
|
||||||
|
int finalSuit[5];
|
||||||
|
int ranksinHand[13]; // Используется для оценки последней раздачи
|
||||||
|
int suitsinHand[4]; // Используется для оценки последней раздачи
|
||||||
|
int winnings;
|
||||||
|
time_t t;
|
||||||
|
char suit, rank, stillPlay;
|
||||||
|
// Функция вызывается вне цикла do...while,
|
||||||
|
// так как приветствие нужно отобразить
|
||||||
|
// только однажды, тогда как все остальное
|
||||||
|
// в функции main будет запущено
|
||||||
|
// несколько раз, в зависимости от того, сколько
|
||||||
|
// раз пользователь захочет сыграть.
|
||||||
|
printGreeting();
|
||||||
|
// Цикл запускается каждый раз, когда пользователь
|
||||||
|
// запрашивает раздачу новой партии карт
|
||||||
|
do {
|
||||||
|
bet = getBet();
|
||||||
|
srand(time(&t));
|
||||||
|
getFirstHand(cardRank, cardSuit);
|
||||||
|
printf("Ваши пять карт: \n");
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
suit = getSuit(cardSuit[i]);
|
||||||
|
rank = getRank(cardRank[i]);
|
||||||
|
printf("Карта №%d: %c%c\n", i + 1, rank, suit);
|
||||||
|
}
|
||||||
|
// Эти два массива используются, чтобы
|
||||||
|
// провести оценку карт, выданных
|
||||||
|
// пользователю. Однако они должны быть
|
||||||
|
// обнулены, если пользователь затребует
|
||||||
|
// несколько раздач.
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
suitsinHand[i] = 0;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 13; i++)
|
||||||
|
{
|
||||||
|
ranksinHand[i] = 0;
|
||||||
|
}
|
||||||
|
getFinalHand(cardRank, cardSuit, finalRank, finalSuit, ranksinHand, suitsinHand);
|
||||||
|
printf("Ваша последняя партия карт: \n");
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
suit = getSuit(finalSuit[i]);
|
||||||
|
rank = getRank(finalRank[i]);
|
||||||
|
printf("Карта №%d: %c%c\n", i + 1, rank, suit);
|
||||||
|
}
|
||||||
|
winnings = analyzeHand(ranksinHand, suitsinHand);
|
||||||
|
printf("Вы выиграли %d!\n", bet * winnings);
|
||||||
|
bank = bank - bet + (bet * winnings);
|
||||||
|
printf("\nВ вашем банке сейчас %d.\n", bank);
|
||||||
|
printf("\nХотите сыграть ещё раз? ");
|
||||||
|
scanf(" %c", &stillPlay);
|
||||||
|
} while (toupper(stillPlay) == 'Y');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/****************************************************/
|
||||||
|
// Распечатать быстрое приветствие, а также рассказать
|
||||||
|
// пользователям о ценности различных выигрышных
|
||||||
|
// комбинаций
|
||||||
|
void printGreeting()
|
||||||
|
{
|
||||||
|
printf("*************************************\n");
|
||||||
|
printf("\n\tДобро пожаловать в казино для новичков!\n\n");
|
||||||
|
printf("\tДом видео покера с обменом\n\n");
|
||||||
|
printf("*************************************\n");
|
||||||
|
printf("Правила таковы:\n");
|
||||||
|
printf("Ваш начальный баланс 100 кредитов, вы должны сделать ");
|
||||||
|
printf("ставку в размере от 1 до 5 кредитов.\n");
|
||||||
|
printf("Вам выдано 5 карт, вы должны выбрать, какие ");
|
||||||
|
printf("карты оставить, а какие - ");
|
||||||
|
printf("сбросить.\n");
|
||||||
|
printf("Вам нужно собрать наилучшую из возможных комбинаций.\n");
|
||||||
|
printf("\nДалее приведена таблица выигрышей (в расчете на ");
|
||||||
|
printf("ставку в 1 кредит):");
|
||||||
|
printf("\nПара\t\t\t\t1 кредит");
|
||||||
|
printf("\nДве пары\t\t\t2 кредита");
|
||||||
|
printf("\nТри карты одного типа\t\t3 кредита ");
|
||||||
|
printf("\nСтрит\t\t\t\t4 кредита");
|
||||||
|
printf("\nФлэш\t\t\t\t5 кредитов");
|
||||||
|
printf("\nФулхауз\t\t\t\t8 кредитов ");
|
||||||
|
printf("\nЧетыре карты одного типа\t10 кредитов");
|
||||||
|
printf("\nФлэш-рояль\t\t\t20 кредитов");
|
||||||
|
printf("\n\nРазвлекайтесь!!\n\n");
|
||||||
|
}
|
||||||
|
// Функция для выдачи первых пяти карт
|
||||||
|
void getFirstHand(int cardRank[], int cardSuit[])
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
int cardDup;
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
cardDup = 0;
|
||||||
|
do {
|
||||||
|
// Один из 13 номиналов карты (2-10, В, Д, K, Т)
|
||||||
|
cardRank[i] = (rand() % 13);
|
||||||
|
// Одна из четырех мастей карты
|
||||||
|
// (пики, бубны, червы, трефы)
|
||||||
|
cardSuit[i] = (rand() % 4);
|
||||||
|
// Цикл, гарантирующий уникальность каждой карты
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
{
|
||||||
|
if ((cardRank[i] == cardRank[j]) &&
|
||||||
|
(cardSuit[i] == cardSuit[j]))
|
||||||
|
{
|
||||||
|
cardDup = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (cardDup == 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Функция, заменяющая целочисленный номер масти на
|
||||||
|
// букву, представляющую эту масть
|
||||||
|
char getSuit(int suit)
|
||||||
|
{
|
||||||
|
switch (suit)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return('п');
|
||||||
|
case 1:
|
||||||
|
return('б');
|
||||||
|
case 2:
|
||||||
|
return('ч');
|
||||||
|
case 3:
|
||||||
|
return('т');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Функция, заменяющая целочисленный номер номинала
|
||||||
|
// карты на букву, представляющую этот номинал
|
||||||
|
char getRank(int rank)
|
||||||
|
{
|
||||||
|
switch (rank)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return('Т');
|
||||||
|
case 1:
|
||||||
|
return('2');
|
||||||
|
case 2:
|
||||||
|
return('3');
|
||||||
|
case 3:
|
||||||
|
return('4');
|
||||||
|
case 4:
|
||||||
|
return('5');
|
||||||
|
case 5:
|
||||||
|
return('6');
|
||||||
|
case 6:
|
||||||
|
return('7');
|
||||||
|
case 7:
|
||||||
|
return('8');
|
||||||
|
case 8:
|
||||||
|
return('9');
|
||||||
|
case 9:
|
||||||
|
return('10');
|
||||||
|
case 10:
|
||||||
|
return('В');
|
||||||
|
case 11:
|
||||||
|
return('Д');
|
||||||
|
case 12:
|
||||||
|
return('K');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Функция для получения ставки пользователя (от 1 до 5)
|
||||||
|
int getBet()
|
||||||
|
{
|
||||||
|
int bet;
|
||||||
|
do //Будет повторяться, пока пользователь не введет 0 - 5
|
||||||
|
{
|
||||||
|
printf("Сколько вы хотите поставить? (Введите число от ");
|
||||||
|
printf("1 до 5 или 0 для выхода из игры): ");
|
||||||
|
scanf(" %d", &bet);
|
||||||
|
if (bet >= 1 && bet <= 5)
|
||||||
|
{
|
||||||
|
return(bet);
|
||||||
|
}
|
||||||
|
else if (bet == 0)
|
||||||
|
{
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("\n\nПожалуйста введите ставку от 1 до 5 или ");
|
||||||
|
printf("0 для выхода из игры.\n");
|
||||||
|
}
|
||||||
|
} while ((bet < 0) || (bet > 5));
|
||||||
|
}
|
||||||
|
// Последняя функция проводит оценку последней
|
||||||
|
// выданной игроку партии карт
|
||||||
|
int analyzeHand(int ranksinHand[], int suitsinHand[])
|
||||||
|
{
|
||||||
|
int num_consec = 0;
|
||||||
|
int i, rank, suit;
|
||||||
|
int straight = FALSE;
|
||||||
|
int flush = FALSE;
|
||||||
|
int four = FALSE;
|
||||||
|
int three = FALSE;
|
||||||
|
int pairs = 0;
|
||||||
|
for (suit = 0; suit < 4; suit++)
|
||||||
|
if (suitsinHand[suit] == 5)
|
||||||
|
flush = TRUE;
|
||||||
|
rank = 0;
|
||||||
|
while (ranksinHand[rank] == 0) {
|
||||||
|
rank++;
|
||||||
|
}
|
||||||
|
for (; rank < 13 && ranksinHand[rank]; rank++) {
|
||||||
|
num_consec++;
|
||||||
|
}
|
||||||
|
if (num_consec == 5) {
|
||||||
|
straight = TRUE;
|
||||||
|
}
|
||||||
|
for (rank = 0; rank < 13; rank++) {
|
||||||
|
if (ranksinHand[rank] == 4) four = TRUE;
|
||||||
|
if (ranksinHand[rank] == 3) three = TRUE;
|
||||||
|
if (ranksinHand[rank] == 2) pairs++;
|
||||||
|
}
|
||||||
|
if (straight && flush) {
|
||||||
|
printf("Флеш-рояль\n\n");
|
||||||
|
return (20);
|
||||||
|
}
|
||||||
|
else if (four) {
|
||||||
|
printf("Четыре одного типа\n\n");
|
||||||
|
return (10);
|
||||||
|
}
|
||||||
|
else if (three && pairs == 1) {
|
||||||
|
printf("Фуллхаус\n\n");
|
||||||
|
return (8);
|
||||||
|
}
|
||||||
|
else if (flush) {
|
||||||
|
printf("Флеш\n\n");
|
||||||
|
return (5);
|
||||||
|
}
|
||||||
|
else if (straight) {
|
||||||
|
printf("Стрит\n\n");
|
||||||
|
return (4);
|
||||||
|
}
|
||||||
|
else if (three) {
|
||||||
|
printf("Три одного типа\n\n");
|
||||||
|
return (3);
|
||||||
|
}
|
||||||
|
else if (pairs == 2) {
|
||||||
|
printf("Две пары\n\n");
|
||||||
|
return (2);
|
||||||
|
}
|
||||||
|
else if (pairs == 1) {
|
||||||
|
printf("Пара\n\n");
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("Старшая карта\n\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Функция просматривает все пять карт первой партии
|
||||||
|
// и спрашивает пользователя, хочет ли он оставить
|
||||||
|
// карту. Если нет, то карта пользователя заменяется.
|
||||||
|
void getFinalHand(int cardRank[], int cardSuit[], int
|
||||||
|
finalRank[],
|
||||||
|
int finalSuit[], int ranksinHand[],
|
||||||
|
int suitsinHand[])
|
||||||
|
{
|
||||||
|
int i, j, cardDup;
|
||||||
|
char suit, rank, ans;
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
suit = getSuit(cardSuit[i]);
|
||||||
|
rank = getRank(cardRank[i]);
|
||||||
|
printf("Хотите сохранить карту №%d: %c%c?", i + 1, rank, suit);
|
||||||
|
printf("\nПожалуйста, ответьте (Y/N): ");
|
||||||
|
scanf(" %c", &ans);
|
||||||
|
if (toupper(ans) == 'Y')
|
||||||
|
{
|
||||||
|
finalRank[i] = cardRank[i];
|
||||||
|
finalSuit[i] = cardSuit[i];
|
||||||
|
ranksinHand[finalRank[i]]++;
|
||||||
|
suitsinHand[finalSuit[i]]++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (toupper(ans) == 'N')
|
||||||
|
{
|
||||||
|
cardDup = 0;
|
||||||
|
do {
|
||||||
|
cardDup = 0;
|
||||||
|
finalRank[i] = (rand() % 13);
|
||||||
|
finalSuit[i] = (rand() % 4);
|
||||||
|
// Сравнить новую карту с 5 картами первой
|
||||||
|
// партии для во избежание повторов
|
||||||
|
for (j = 0; j < 5; j++)
|
||||||
|
{
|
||||||
|
if ((finalRank[i] == cardRank[j]) &&
|
||||||
|
(finalSuit[i] == cardSuit[j]))
|
||||||
|
{
|
||||||
|
cardDup = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Далее, сопоставить новую карту
|
||||||
|
// с только что
|
||||||
|
// выданными во избежание повторов
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
{
|
||||||
|
if ((finalRank[i] == finalRank[j]) &&
|
||||||
|
(finalSuit[i] == finalSuit[j]))
|
||||||
|
{
|
||||||
|
cardDup = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (cardDup == 1);
|
||||||
|
ranksinHand[finalRank[i]]++;
|
||||||
|
suitsinHand[finalSuit[i]]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
135
poker/poker/poker.vcxproj
Normal file
135
poker/poker/poker.vcxproj
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{ab8d4365-60b2-44e9-91c8-32fb3ef84f74}</ProjectGuid>
|
||||||
|
<RootNamespace>poker</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
22
poker/poker/poker.vcxproj.filters
Normal file
22
poker/poker/poker.vcxproj.filters
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Исходные файлы">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Файлы заголовков">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Файлы ресурсов">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.c">
|
||||||
|
<Filter>Исходные файлы</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user