Страница 1 из 1
Массив структур и функции
Добавлено: 08 дек 2009, 22:46
Dragon
Есть задачка. Необходимо подсчитать кол-во комбинаций карт на руках у игрока в 5-карточном покере. Реализовать через массив структур.
Вобщем-то вопрос в том, как передать функции (без указателей т.к. пока с ними не знаком и данная задача их использвание не подразумевает!) массив структур?
Код: Выделить всё
#include <iostream>
const int ARRAY = 5;
struct Poker
{
char value[3]; //значение карты (такое, временное, решение взято из-за десятки)
char suit; //масть
};
void array_fill(); //???
int main()
{
Poker player[ARRAY];
array_fill(); //???
return 0;
}
Если структура содержит массивы, то через ссылку передать можно.
А когда это массив структур...
Хотелось бы узнать, реально ли и как это сделать.
Заранее спасибо за помощь.
Re: Массив структур и функции
Добавлено: 09 дек 2009, 02:19
Romeo
Можно так:
Фактически, это тоже скрытая форма указателя, но отсутствие звёздочки должно тебя успокоить (ибо с указателями ты ещё не знаком).
Re: Массив структур и функции
Добавлено: 10 дек 2009, 10:35
Dragon
Спасибо.
Правда там ошибки компилятора, собственно решил заполнять массив в основной программе (пока с указателями не знаком), а для передачи в функцию использую 2 временные переменные

Re: Массив структур и функции
Добавлено: 11 дек 2009, 01:05
Romeo
Давай сюда код. Поругаем и наставим на путь истинный

Re: Массив структур и функции
Добавлено: 11 дек 2009, 10:41
Dragon
Немного переработал структуру.
Код: Выделить всё
#include <iostream>
#include <cstdlib>
const int ARRAY_SIZE = 5;
struct Poker
{
int value;
char suit;
};
void check_suit(char suit);
int transform(char ch_value);
int main()
{
using namespace std;
Poker player[ARRAY_SIZE];
char ch_value, ch_suit;
cout << "Enter 5 values of cards with suit:\n"
<< "(2-9 - 2-9, T - 10, J - Jack, Q - Queen, K - King, A - Ace)\n"
<< "(S - spades, H - hearts, D - diamonds, C - clubs)\n";
for (int i = 0; i < ARRAY_SIZE; i++)
{
cout << "Card " << i+1 << " value : ";
cin >> ch_value;
player[i].value = transform(ch_value);
cout << "Card " << i+1 << " suit : ";
cin >> player[i].suit;
//Проверяем корректность ввода масти
ch_suit = player[i].suit;
check_suit(ch_suit);
}
return 0;
}
//Используем библиотеку классов cstdlib
void check_suit(char suit)
{
switch(suit)
{
case 'S':
case 's':
case 'H':
case 'h':
case 'D':
case 'd':
case 'C':
case 'c':
break;
default:
std:: cout << "Error. Illegal suit of card.\n";
exit(1);
}
}
//Используем библиотеку cstdlib
int transform(char ch_value)
{
switch(ch_value)
{
case '2':
return 2;
case '3':
return 3;
case '4':
return 4;
case '5':
return 5;
case '6':
return 6;
case '7':
return 7;
case '8':
return 8;
case '9':
return 9;
case 'T':
case 't':
return 10;
case 'J':
case 'j':
return 11;
case 'Q':
case 'q':
return 12;
case 'K':
case 'k':
return 13;
case 'A':
case 'a':
return 1;
default:
std::cout << "Error. Illegal card value.\n";
exit(1);
}
}