0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 20
1

Poker

25.04.2012, 22:51. Показов 1750. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны 5 целых чисел. Среди них:
если одинаковы 5, то вывести "Impossible", иначе
если одинаковы 4, то вывести "Four of a Kind", иначе
если одинаковы 3 и 2, то вывести "Full House", иначе
если есть 5 последовательных, то вывести "Straight", иначе
если одинаковы 3, то вывести "Three of a Kind", иначе
если одинаковы 2 и 2, то вывести "Two Pairs", иначе
если одинаковы 2, то вывести "One Pair", иначе
вывести "Nothing".

Ввод
В первой строке находятся 5 чисел через пробел.
Вывод
Выводится одна строка - результат анализа.
Ограничения
Все числа от 1 до 13 включительно.

Не могу понять как организовать стравнение элементов массива между собой. подскажите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2012, 22:51
Ответы с готовыми решениями:

Poker
Даны 5 целых чисел. Среди них: если одинаковы 5, то вывести "Impossible", иначе если одинаковы...

Создание онлайн приложения Poker
На каком языке программирования лучше и проще написать онлайн покер для социальной сети?

Poker Dice Энди Харрис
люди помогите пожалуйста с игрой "Покер с костями" из учебник Харриса по сути почти все норм...

Програмное приложение для online poker
Нужно разработать программное обеспечение для онлайн-покера. плюс создать сайт для онлайн-игры...

5
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
25.04.2012, 22:53 2
Вначале сортируешь массив, а дальше всё элементарно.
Если всё еще не понял как решать, то вот моё решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <cstdio>
#include <cstdlib>
 
const size_t HAND_SIZE = 5;
 
int comparator( const void * a, const void * b );
bool isStraight( const int hand[ HAND_SIZE ] );
bool isThreeOfAKind( const int hand[ HAND_SIZE ] );
bool isPair( const int hand[ HAND_SIZE ] );
 
int main()
{
   int hand[ HAND_SIZE ] = { -1 };
   FILE * fin = NULL;
   FILE * fout = NULL;
   char * result = NULL;
 
   fin = fopen( "input.txt", "rt" );
   if ( fin == NULL )
   {
      printf( "can't open input.txt for reading\n" );
      exit( EXIT_FAILURE );
   }
   for ( size_t i=0; i < HAND_SIZE; i++ )
   {
      fscanf( fin, "%d", &hand[i] );
   }
 
   fclose( fin );
 
   qsort( hand, HAND_SIZE, sizeof(hand[0]), comparator );
 
   if ( hand[0] == hand[ HAND_SIZE - 1 ] )
      result = "Impossible";
   else if ( hand[0] == hand[3] || hand[1] == hand[4] )
      result = "Four of a Kind";
   else if ( hand[0] == hand[2] && hand[3] == hand[4] ||
             hand[0] == hand[1] && hand[2] == hand[4]   )
      result = "Full House";
   else if ( isStraight(hand) )
      result = "Straight";
//   else if ( isThreeOfAKind(hand) )
   else if ( hand[0] == hand[2] || hand[1] == hand[3] || hand[2] == hand[4] )
      result = "Three of a Kind";
   else if ( hand[0] == hand[1] && hand[2] == hand[3] ||
             hand[0] == hand[1] && hand[3] == hand[4] ||
             hand[1] == hand[2] && hand[3] == hand[4]    )
      result = "Two Pairs";
   else if ( isPair(hand) )
      result = "One Pair";
   else
      result = "Nothing";
 
   fout = fopen( "output.txt", "wt" );
   fprintf( fout, result );
   fclose( fout );
 
   return 0;
}
 
int comparator( const void * a, const void * b )
{
   return *(int *)a - *(int *)b;
}
 
bool isStraight( const int hand[ HAND_SIZE ] )
{
   for ( size_t i = 1; i < HAND_SIZE; i++ )
   {
      if ( hand[ i - 1 ] != hand[ i ] - 1 )
         return false;
   }
 
   return true;
}
 
bool isThreeOfAKind( const int hand[ HAND_SIZE ] )
{
   bool breaked = false;
 
   for ( size_t i = 0; i < HAND_SIZE - 2; i++ )
   {
      for( size_t j = 1; j < 3; j++ )
      {
         if ( hand[ i + j ] != hand[ i + j - 1 ] )
         {
            breaked = true;
            break;
         }
      }
 
      if ( !breaked )
         return true;
   }
 
   return false;
}
 
bool isPair( const int hand[ HAND_SIZE ] )
{
   for ( size_t i = 1; i < HAND_SIZE; i++ )
   {
      if ( hand[ i - 1 ] == hand[ i ]  )
         return true;
   }
 
   return false;
}
Только в функции isThreeOfAKind() ошибка, но я её не искал
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.04.2012, 22:56 3
Покер - даны 5 целых чисел. Определить в них комбинации повторяющихся элементов
0
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.04.2012, 22:59 4
Как то так
C++
1
2
3
4
5
6
7
8
9
const int size=5;
int array[size];
for(int i=0;i<size;i++)
  for(int j=0;j<size;j++) 
     if(i!=j)  
       {
       if(array[i]==array[j]) {/* то что буде если равны*/}
       else {/* если не равны*/ }
       }
1
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 20
26.04.2012, 00:22  [ТС] 5
Написал кодик вроде все работает правильно, но если эллементы не стоят друг за другом он выдает "Насынк", что делать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
using namespace std;
    int main()
{
    const int N=5;
    int a[5],i,k,size,temp[]={1,1,1,1,1};
    for (i=0;i<5;i++)
        cin>>a[i];
    for (i=1,k=0,size=N;i<N;i++)
        {
            if (a[i]==a[i-1])
            {
                temp[k]++;
                size--;
            }
            else
                k++;
    }
    if (size!=N)
    {
        k=temp[0];
        for (i=1;i<size;i++)
            if (temp[i]>k)
                k=temp[i];
        if (size==1)
            cout<<"Impossible";
        else 
            if (size==2)
        {
            if (k==4)
                cout<<"Four of a Kind";
            else 
                cout<<"Full House";
        }
        else 
            if (size==3)
        {
            if (k==3)
                cout<<"Three of a Kind";
            else 
                cout<<"Two Pairs";
        }
        else 
            cout<<"One Pair";
    }
            else 
            {
                for (i=1;i<N;i++)
                    if (a[i]!=a[i-1]+1)
                        break;
                if (i==N)
                    cout<<"Straight";
                else cout<<"Nothing";
            }
            return 0;
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.04.2012, 01:00 6
kenny58, сразу после ввода элементов отсортируй массив
0
26.04.2012, 01:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2012, 01:00
Помогаю со студенческими работами здесь

Создание бота для приложения вконтакте ''Poker Shark"
Здравствуйте, хочу написать бота для приложения вконтакте ''Poker Shark&quot;. Не для того чтоб бот...

Помощь в проекте "Lite poker"
Всем привет. Я решил создать игру покер в упрощеной версии, ну примерно как пасьянс паук, косынка и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru