Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Крестики нолики на с++  (Прочитано 12871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #90 : 29 Января 2015, 18:05:14 »
Гриб_под_зонтом, как ты пытался?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #91 : 29 Января 2015, 19:23:41 »
alsoijw,
В цикле вместо y2+k    y2+predel+1
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #92 : 29 Января 2015, 19:57:44 »
Гриб_под_зонтом, напиши условие, которое будет проверять выход за границы для двух видов диагоналей.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #93 : 20 Февраля 2015, 23:02:30 »
Гриб_под_зонтом, готова проверка?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #94 : 20 Февраля 2015, 23:17:56 »
alsoijw,
Не( До сих пор не понял как это можно сделать
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #95 : 20 Февраля 2015, 23:45:35 »
if(x + i < predel && y + i < predel)
Пользователь решил продолжить мысль 20 Февраля 2015, 23:46:03:
Теперь код для проверки по диагонали.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #96 : 23 Февраля 2015, 19:25:20 »
alsoijw,
Не совсем понимаю для чего нужна проверка на выход из поля: у нас ведь x2 и y2 принимают строго известные значения
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #97 : 23 Февраля 2015, 21:32:10 »
Гриб_под_зонтом,
for(y...)
{
for(x..)
{
printf("_|");
}
printf("\n");
}
Wars ~.o

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #98 : 23 Февраля 2015, 23:15:39 »
Гриб_под_зонтом, имхо ты уже знаешь, почему за границы массива выходить нельзя. x = 23 y = 5 - будет выход за границу? Ты должен предусмотреть эту ситуацию.
ЗЫ код проверки по диагоналям в студию.

Пользователь решил продолжить мысль 23 Февраля 2015, 23:46:18:
Гриб_под_зонтом, и ещё: твой код не очень эффективен. Сколько раз отработает цикл(если там нет пяти символов подряд), пока проверит строчку? Для нулевого элемента - 5 раз. для первого - 5 раз. Для двадцатог - 5 раз. Итог 21*5.
Код: (cpp) [Выделить]
bool win()
{
        int win = 0;
        for (int x2 = 0; x2 < predel; x2++)
        {
                for (int y2 = 0; y2 <= predel-5; y2++)
                {
                        for (int k=0; k <= 5; k++)
                        {
                                if (pole[x2][y2+k]=='X') win++;
                        }
                        if (win==5) return true;
                        if (win!=5) win = 0;
                }
        }
        return false;
}
Как тебе такой вариант? Хотел быстро написать код, по этому массив одномерный(проверяет одну строку). Думаю ты знаешь, как изменить этот код, чтобы он проверял всё поле.
Код: (vala) [Выделить]
void main()
{
/*Заполняем поле*/
var mass = " bbb bbbbx";
/*Последний символ. Лучше всего взять пробел*/
char last = ' ';
/*Длина цепочки*/
var length = 0;
/*Перебираем строку*/
for(var i = 0; i < mass.length; i++)
{
/*Если текущий символ равен предыдущему -
то это может быть продолжение цепочки.
А может это пробелы стоят рядом*/
if(mass[i] == last && mass[i] != ' ')
{
length++;
}
/*Встретилось начало следующей цепочки. Её длина - 1 символ*/
else
{
length = 1;
last = mass[i];
}
/*Проверка достаточная ли длина цепочки. Не забываем выйти из функции*/
if(length == 4)
{
/*Печать последнего сивола цепочки*/
stdout.printf(@"$i\n");
return;
}
}
}
Этот код проходит строку не возвращаясь. Бонусом мы получаем возможность проверки хода не только для крестиков.
« Последнее редактирование: 23 Февраля 2015, 23:46:18 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #99 : 24 Февраля 2015, 22:13:12 »
alsoijw,
некоторые моменты в твоём коде мне совсем не понятны. Что означает эта строчка:var mass = " bbb bbbbx";? и много таких же непонятных
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #100 : 25 Февраля 2015, 21:44:39 »
Гриб_под_зонтом, это пример алгоритма. Строка - одномерный массив символов. Что ещё не понятно?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн AndreyChursin

  • Участник
  • *
  • Сообщений: 110
  • «Я есть, потому-что мы есть»
    • Просмотр профиля
    • РА Гермес
Re: Крестики нолики на с++
« Ответ #101 : 26 Февраля 2015, 10:26:56 »
читай любое руководство по программированию!
без основ будешь выглядеть дураком, ибо циклы...эх... это одно из первых, что нужно знать в ооп!
https://code-live.ru/tag/cpp-manual/
Ubuntu — «человечность по отношению к другим»

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #102 : 26 Февраля 2015, 14:49:44 »
AndreyChursin, в гугл/яндекс и я послать могу. Ты посмотри на ПОСЛЕДНИЕ его сообщения. Он про циклы уже знает.
ЗЫ если объяснять, то объяснять последовательно.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #103 : 26 Февраля 2015, 15:15:26 »
alsoijw,
а вас "циклы" а "ооп" не смутили? :)
циклы не только в ооп уметь надо....
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #104 : 27 Февраля 2015, 01:42:03 »
alsoijw,
тогда добавляем ещё один вложеный цикл, который бует отвечать за вторую координату и будем построчно проверять всё поле.
P. S. (@"$i\n") - что это?
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

 

Страница сгенерирована за 0.017 секунд. Запросов: 19.