Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2008, 16:42   #1
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию Памагите найти ошибку в коде...С++

Код:
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <fstream>
using namespace std;
struct Cub {
    int M[3][3];
};
Cub ARRAY_SHABLON[3][3] = {};
Cub ARRAY[3][3] = {};

// Функция загрузки шаблона.
void load_shablon();

// Функция заполнения матрицы.
void fill_in_matrix();

// Функция проверки числа.
bool search_n(int buf, int Y, int X, int Y_CUB, int X_CUB);

// Выводим содержимое все матрицы.
void out_matrix();

int main()
{   
    load_shablon();   
    fill_in_matrix();
    out_matrix();
    system("PAUSE");
    return 0;
}

// Функция заполнения матрицы.
void fill_in_matrix()
{
    srand(time(NULL));
    int buf;
    for(int y=0; y<3; y++)
    {
        for(int y_cub=0; y_cub<3; y_cub++)
        {
            for(int x=0; x<3; x++)
            {
                for(int x_cub=0; x_cub<3; x_cub++)
                {
                    if(ARRAY_SHABLON[y][x].M[y_cub][x_cub] == 1)
                    {
                        do
                        {
                            buf = rand() % 10;
                        }while(buf == 0 || search_n(buf, y, x, y_cub, x_cub));
                        ARRAY[y][x].M[y_cub][x_cub] = buf;
                        buf = 0;
                    }
                }
            }
        }
    }
}

// Функция проверки числа.
bool search_n(int buf, int Y, int X, int Y_CUB, int X_CUB)
{       
    // Проверка по строке
    for(int y=0; y<3; y++)
    {
        for(int y_cub=0; y_cub<3; y_cub++)
        {
            for(int x=0; x<3; x++)
            {
                for(int x_cub=0; x_cub<3; x_cub++)
                {
                    if(ARRAY[y][x].M[y_cub][x_cub] == buf)
                        return 1;
                }
            }
        }
    }
    
    for(int x=0; x<3; x++)
    {
        for(int x_cub=0; x_cub<3; x_cub++)
        {
            for(int y=0; y<3; y++)
            {
                for(int y_cub=0; y_cub<3; y_cub++)
                {
                    if(ARRAY[y][x].M[y_cub][x_cub] == buf)
                        return 1;
                }
            }
        }
    }
    
    return 0;     
}   
// Функция загрузки шаблона.      
void load_shablon()
{
    ifstream in_date;
    char buf;
    in_date.open("shablon.txt");
    for(int y=0; y<3; y++)
    {
        for(int y_cub=0; y_cub<3; y_cub++)
        {
            for(int x=0; x<3; x++)
            {
                for(int x_cub=0; x_cub<3; x_cub++)
                {
                    in_date.get(buf);
                    ARRAY_SHABLON[y][x].M[y_cub][x_cub] = buf - 48;
                }
            }
        }
    }
}

// Выводим содержимое все матрицы
void out_matrix()
{
    for(int y=0; y<3; y++)
    {
        for(int y_cub=0; y_cub<3; y_cub++)
        {
            for(int x=0; x<3; x++)
            {
                for(int x_cub=0; x_cub<3; x_cub++)
                {
                    if(ARRAY[y][x].M[y_cub][x_cub] != 0)
                    {
                        cout << ARRAY[y][x].M[y_cub][x_cub];
                    }
                    else
                    {
                        cout << " ";
                    }
                }
            }
            cout << endl;
        }
    }
}
Программа генерирует сетку для игры SUDOCU.
1.Загружает шаблон типа
0001000100
1000110001
...
2.Вместо единиц программа подставляет случайное значеие предварительно проверив нет ли его в строке и столбце.

3.Выводит резулт. на экран

Вероятней всего ошибка в
bool search_n(int buf, int Y, int X, int Y_CUB, int X_CUB)
Goblin вне форума Ответить с цитированием
Старый 13.05.2008, 18:15   #2
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Эврика!
Все, решил.
Goblin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку N!ckeL Общие вопросы Delphi 9 05.05.2008 14:15
Помогите исправить ошибку в коде... prizrak1390 Общие вопросы Delphi 4 26.04.2008 13:19
помогите найти ошибку в коде Joker88 Помощь студентам 1 04.03.2008 12:43
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15