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

Создание таблицы для судоку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
CableGuy
 Аватар для CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
29.03.2012, 22:27     Создание таблицы для судоку #1
Всем доброго времени суток.Пишу курсовую на тему "Судоку",надо в двумерный массив случайным образом заносить числа от 1 до 9.Вот часть программы где заполняет таблицу.
И вот проблема,вайл прокручивается определенное количество раз,потом просто зависает,так и не дойдя до конца.Никак не могу понять из-за чего так.Кто поможет буду сильно благодарен.
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
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
int mass_numb[9][9];
void main()
{
    int numb=1,k=0,t=0,progress=0,col,row,c,r;
/* numb число которое добавляеться в таблицу,k надо для проверки на совпадения
progress будет подсчитывать на сколько заполнена таблица,col и row - надо для случайно выбранной позиции,с и r для нахождения начальной клетки в секторе где будет проверка на совпадение */
    srand(time(NULL));
    while(progress<72)
    {
        col=rand()%9;
        row=rand()%9;
        if(mass_numb[col][row]==0)
        {
            for(int i=0;i<9;i++)
            {
                if(numb==mass_numb[col][i])
                    k++;
                if(numb==mass_numb[i][row])
                    k++;
//Проверяем строку и колонку на совпадения
            }
            c=(col/3)*3;
            r=(row/3)*3;
            for(i=0;i<3;i++)
                for(int j=0;j<3;j++)
                    {
                        if(numb==mass_numb[c+i][r+j])
                            k++;
                    }
//Проверяем по сектору нет ли совпадеий
            if(k==0)
            {
                mass_numb[col][row]=numb;
                progress++;
                cout<<progress<<" done"<<endl;
                if(progress%9==0)
                    numb++;
            }
            k=0;
//Если совпадений небыло заносим число в массив,увиличуем progress
//и если число использовалось 9 раз увеличуем на еденицу,обнуляем k
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 22:27     Создание таблицы для судоку
Посмотрите здесь:

C++ Непонятки с выводом елементов в рамке для игры судоку.
C++ создание таблицы умножения, error
C++ Судоку
Судоку C++
C++ Судоку си++
C++ Двумерный массив, нужны проверки для игры Судоку
Создание таблицы C++
Создание таблицы С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.03.2012, 23:14     Создание таблицы для судоку #2
у Вас просто создается тупиковая ситуация, например такая:
120000000
000120000
000000120
012000000
000012000
000000210
201000000
000201000
000000001
не может код поместить 9-тую 2-ку в нижний правый квадрат, место занято уже 1-цей.
CableGuy
 Аватар для CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
30.03.2012, 00:36  [ТС]     Создание таблицы для судоку #3
Понял,большое спасибо)
Yandex
Объявления
30.03.2012, 00:36     Создание таблицы для судоку
Ответ Создать тему
Опции темы

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