Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
strange_man
 Аватар для strange_man
9 / 9 / 0
Регистрация: 17.05.2012
Сообщений: 117
#1

Проверка наличия двух пар среди выданных игроку карт - C++

25.11.2012, 14:22. Просмотров 214. Ответов 2
Метки нет (Все метки)

Можно ли оптимизировать алгоритм этой функции?
У меня извечная проблема... когда я напишу функцию или часть кода в программе и он работает, то вместо радости у меня появляется чувство что я плохо составил алгоритм и код получился некрасивым. несмотря на то что он свою функцию выполняет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool DeckOfCards::twoPairs (const int *face)
{
    bool twoPairs = false;
    int pairs[5][5] = { 0 };
    int count = 0;
 
    for (int face1 = 0; face1 < 5; face1++)
        for (int face2 = 0; face2 < 5; face2++)
            if (face[face1] == face[face2] && face1 != face2 && (pairs[face1][face2] == 0 || pairs[face2][face1] == 0))
            {
                pairs[face1][face2] = 1;
                pairs[face2][face1] = 1;
                count++;
                if (count == 2)
                {
                    twoPairs = true;
                    break;
                }
            }
 
    return twoPairs;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 14:22     Проверка наличия двух пар среди выданных игроку карт
Посмотрите здесь:

Проверка наличия символов в строке C++
Проверка наличия соединения с интернет, VC++ C++
Решить уравнение Ax = B для семи пар значений А и В, заданных в двух массивах. C++
C++ Дается последовательность. Найдите максимальное произведение среди всех пар этих чисел
Найти минимальный элемент среди двух максимальных C++
Проверка наличия файлов в директории C++
Проверка наличия слова в тексте C++
C++ Проверка наличия файла
C++ Поиск среди пар элементов вектора
Класс, выясняющий, сколько среди заданных чисел пар, которые дают в сумме четное число C++
Раздача карт, оценка комбинации и выяснение сколько карт взять, сколько сбросить C++
Исключение повторов комбинаций среди множества пар целых чисел с помощью multimap C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
25.11.2012, 14:25     Проверка наличия двух пар среди выданных игроку карт #2
хранить все карты отсортированными. Новую карту вставлять "сортировкой вставками". Тогда и 2 пары и 3 пары будут просто идти подряд и условия для них будут
C++
1
2
for (int face1 = 0; face1 < 5-1; face1++)
   if (face[face1] == face[face1+1] )
strange_man
 Аватар для strange_man
9 / 9 / 0
Регистрация: 17.05.2012
Сообщений: 117
25.11.2012, 14:34  [ТС]     Проверка наличия двух пар среди выданных игроку карт #3
а если без сортировка то я так исправил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool DeckOfCards::twoPairs (const int *face)
{
    bool twoPairs = false; 
    int count = 0; //счетчик пар
 
    for (int face1 = 0; face1 < 5; face1++) //одна карта
        for (int face2 = face1 + 1; face2 < 5; face2++) //другая карта
            if (face[face1] == face[face2])
            {
                count++;
                if (count == 2)
                {
                    twoPairs = true;
                    break;
                }
            }
 
    return twoPairs;
}
но с сортировкой в 100 раз лучше... и почему я сразу не догадался ((((((

Добавлено через 4 минуты
Тогда для пар, троек а каре можно будет замутить одну функцию, так?
хотя нет...а если будет 3 карты подряд? засчитает 2 пары
Yandex
Объявления
25.11.2012, 14:34     Проверка наличия двух пар среди выданных игроку карт
Ответ Создать тему
Опции темы

Текущее время: 12:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru