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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
#1

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

29.03.2012, 22:27. Просмотров 1582. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток.Пишу курсовую на тему "Судоку",надо в двумерный массив случайным образом заносить числа от 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++
Привложив титанические усилия :scratch: я написал програмку в которой должны отображаться елементы массива(покамись это просто нули) и...

Двумерный массив, нужны проверки для игры Судоку - C++
я вчера задал этот вопрос но ответв не получил . пожалуйста посмотрите и помогите ...

Создание таблицы С++ - C++
#include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; char *FName=&quot;C:\MyFile.txt&quot;; void CreateFile() { cout&lt;&lt;&quot;Create...

Создание таблицы - C++
Добрый день, задача заключается в том, чтобы считать данные и поместить их в таблицу.Задача состоит в том, чтобы создать таблицу. Прошу...

Создание хэш таблицы - C++
суть проблемы в том, что когда я создал талицу, в самом методе билд если её вывести то все данные верны, но если выводить таблицу функцией...

Создание таблицы в консоли - C++
условие задания программа #include&lt;iostream&gt; #include&lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; int main() ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 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
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
30.03.2012, 00:36  [ТС] #3
Понял,большое спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2012, 00:36
Привет! Вот еще темы с ответами:

создание таблицы умножения, error - C++
Здравствуйте дорогие обитатели форума, собственно я здесь новенький и отношусь так сказать к разряду &quot;хеллоувёрлдщиков&quot;... ну это так, а...

Судоку - C++
6. (6 и 7 лабораторная работа) – Судоку. (6 – заполнение массива).

Судоку - C++
Добрый день! Очень нужна помощь! Нужен код СУДОКУ на С++, задали на курсовую, ничего не получается. В гугле искала, не нашла

Судоку! - C++
Почти написал программу для генерирования судоку. Компилируется, работает, однако в 50% случаях генерирует только 3-8 строк и зависает. В...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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