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

Крестики-нолики - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с файлами и структурами http://www.cyberforum.ru/cpp-beginners/thread170366.html
Текст: Создайте файл, содержащий сведения о личной коллекции книголюба: шифр книги, автор, название, год издания, местоположение (номер стеллажа). Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в алфавитном порядке авторов книг и выведите на экран...
C++ Найти среднее арифметическое каждого из столбцов матрицы Даны: натуральное число n, двействительная матрица размером nx9. Найти среднее арифметическое каждого из столбцов. Программу реализуйте пожалуйста максимально просто на сколько это возможно, чтобы я в ней разобраться смог. Спасибо! http://www.cyberforum.ru/cpp-beginners/thread170365.html
C++ borland c++ 3/0 компилятор не компилирует на ноуте
подскажите что это может быть такое? как исправить это?
C++ перевести в десятичную систему 41.5(восмиричная)
система исчисления: перевести в десятичную систему 41.5(восмиричная)
C++ Создание массива из чисел полученных в ходе вычислений http://www.cyberforum.ru/cpp-beginners/thread170352.html
скажите каким образом я могу полученные числа, в результате вычислений ....сделать их как массив( мне надо эти полученные числа сравнить между собой и найти минимальное! )
C++ STL и функция remove_if #include "stdafx.h" #include <iostream> #include <list> #include <algorithm> #include <iterator> ..... struct computer1 { int comp_number; int comp_mark; подробнее

Показать сообщение отдельно
GennDALF
 Аватар для GennDALF
12 / 12 / 0
Регистрация: 24.09.2009
Сообщений: 61
29.09.2010, 04:55     Крестики-нолики
Доброго времени суток.
Решил написать крестики-нолики, но возник какой-то косяк на ровном (и естесно самом неожиданном) месте.
Коротко о том, что здесь что:
в функции PRE_VICTORY_CHECK происходит проверка, есть ли у противника почти заполненная линия. таблица хранится в двумерном массиве, который и передается извне в функцию.. в случае если обнаруживается, что линия имеется, то запоминаются номера свободной ячейки рядом, т.е. ячейки куда комп должен поставить нолик, дабы не проиграть.
функция CHAR_VALS записывает число int в формат string.
Теперь о проблеме:
сперва вроде все идет как и должно, но при составлении кода хода, который должен сделать комп, (19 строка) отладчик проваливается в никуда с ошибкой:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
внутрь CHAR_VALS отладчик не пускает, поэтому возникает такое впечатление, что ошибка происходит при самом вызове.. и причем тут bad_alloc... %(
вобщем я ни черта не понимаю.. Надеюсь на вашу помощь.
Спасибо!

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
bool PRE_VICTORY_CHECK(string CELLS[4][4], string *TURN)
{
    int count_l = 0, count_r = 0, m = 0, n = 0;
    for (int i = 0; i < 3; i++)
    {
        count_l = 3; count_r = 3;
        for (int j = 0; j < 3; j++)
        {
            if (CELLS[i][j] == " " && count_l > 2) {
                count_l--;
                m = i; n = j;
            }
            if (CELLS[j][i] == " " && count_r > 2) {
                count_r--;
                m = j; n = i;
            }
        }
        if (count_l > 1 || count_r > 1) {
            *TURN = CHAR_VALS(m) + " " + CHAR_VALS(n);
            return true;
        }
        else
            return false;
    }
}
 
string CHAR_VALS(int NUMBER)
{
    int i = 0, c = 0;
    const int LIMIT = pow(10, 6);
    string final = "";
 
    for (c = 1, i = 0; c < LIMIT; c*=10, i++)
    {
        if (NUMBER > c)
            continue;
        else if (NUMBER < c)
            break;
    }
    int * rests = new int[i-1];
    rests[0] = NUMBER % 10;
    for (int j = 1; j < i; j++)
    {
        NUMBER -= rests[j-1]; NUMBER /= 10;
        rests[j] = NUMBER % 10;
    }
 
    for (int j = i-1; j >= 0; j--)
    {
        switch (rests[j])
        {
            case 0:
                final += "0";
                break;
            case 1:
                final += "1";
                break;
            case 2:
                final += "2";
                break;
            case 3:
                final += "3";
                break;
            case 4:
                final += "4";
                break;
            case 5:
                final += "5";
                break;
            case 6:
                final += "6";
                break;
            case 7:
                final += "7";
                break;
            case 8:
                final += "8";
                break;
            case 9:
                final += "9";
                break;
        }
    }
    return final;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru