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

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

Войти
Регистрация
Восстановить пароль
 
lionman
Сообщений: n/a
#1

Не получается сгенерировать массив по типу "Судоку" - C++

25.07.2012, 20:31. Просмотров 476. Ответов 1
Метки нет (Все метки)

Всем привет. Пару дней назад начал учить с++ и столкнулся с проблемой при генерации судоку. Вообщем дело в следующем, программа компилируется нормально, но при запуске вылазит ошибка :

Имя события проблемы: APPCRASH
Имя приложения: sudoku1.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 50101d30
Имя модуля с ошибкой: StackHash_e98d
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Код исключения: c0000005
Смещение исключения: 00000006
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: e98d
Дополнительные сведения 2: e98dfca8bcf81bc1740adb135579ad53
Дополнительные сведения 3: 6eab
Дополнительные сведения 4: 6eabdd9e0dc94904be3b39a1c0583635

В случае же, если закоментированные строки так и оставить, программа запускается нормально, но происходит лажа, числа получаются слишком большие. Вот скрин - http://i42.***********/big/2012/0725/...c01262a66b.png

А вот сам код :
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
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    srand(time(NULL));
    int mass[9][9],i,j,k,n,r,v;
    int z1,z2;
/*  for (i=1;i<10;i++)
{
    for(j=1;j<10;j++) {
                    mass[i][j]=0; 
              }
}*/
    k=1;
    j=1;
    
    mass[1][1]= 1 + rand()%9;
while(!mass[9][9])
    {
        if(i%9)  { 
            j=0; k++;
        }
 
        j++;
 
        r= 1 + rand()%10;
                            if (j>1) {
                     
                                        for(v=j;v>0;v--)
                                            {
                                                    if (mass[k][v]=r) break;
                                            }
                                                 if (v==0) z1=1;
                                      }
                                      
                            if (k>1) {
                                for (v=k;v>0;v--)
                                {
                                    if (mass[k][j]=r) break;
                                }
                                        if (v==0) z2=1;
                                    }
 
            if (z1==1 && z2==1 ) { mass[k][j]=r; i++; }
            z1=0;z2=0;
                            }
 
for (i=1;i<10;i++)
{
    for(j=1;j<10;j++) {
                    cout << " " << mass[i][j] << " ";
                  
              }
 cout << "\n";
}
 
    system("pause");
return 0;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 20:31     Не получается сгенерировать массив по типу "Судоку"
Посмотрите здесь:

Ошибка в решении задачи "Судоку" (acmp) - C++
Здравствуйте. Моё решение: #include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; ...

Сгенерировать число "1" или "2" - C++
Как сделать с помощью функции rand генерацию числа в диапазоне от 0 до 1? Просто если пишу rand() % 1 то всё время выдаёт только одно и...

Алгоритм решения "Судоку" - C++
здравствуйте может кто-нибудь описать примерный алгоритм решения (не генерации) судоку, можно для обычной 9х9, но в идеале чтобы можно...

Написать проверку на соответствие ввода целочисленному типу ("защита от дураков") - C++
Когда вводят букву программа зацикливается int get_move(int i){ std::cout&lt;&lt;&quot;Welcome to tic-tac-toe!\n\n&quot;; std::cout&lt;&lt;&quot;\nMove...

ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору - C++
заголовочный файл #include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace...

Ругань по типу "overloaded is ambiguous" - C++
Добрые люди,встал такой вопрос,помогите разобраться пожалуйста. double Ryad(double X, unsigned int N) { return (pow(-1, N+1))*((pow(X,...

Не получается переопределить операторы "+" и "=" - C++
Всем, ещё раз, привет! Пытаюсь переопределить операторы &quot;+&quot; и &quot;=&quot; вот так: Это файл MyVector2D.cpp MyVector2D&amp; operator/=(MyVector2D...

Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" - C++
Нужно добавить методы ДайЗначениеЯчейки(индексРяда, индексКолонки), УстановиЗначениеЯчейки(индексРяда, индексКолонки, значение). ...

Переписать элементы массива "X" в массив "Y" и подсчитать их количество - C++
Массив: Х(70) Условия и ограничения:-1≤Хi≤1 Переписать элементы массива &quot;X&quot; в массив &quot;Y&quot; и подсчитать их количество на языке С++ ...

Массив "hotel", в который пользователь добавляет "жильцов" - C++
Дорогие форумчане, помогите мне решить проблему в данной программе! Суть программы: Есть массив &quot;hotel&quot;, в который пользователь...

Дан массив из "n" элементов.Выполнить добавление элементов "k" в конец массива - C++
Вот начало,а дальше не знаю как { setlocale(LC_ALL, &quot;Russian&quot;); int n; // кол-во элементов массива cout &lt;&lt; &quot;Введите размер...

Не получается отладить программу: консольное окно не ставится на "паузу" - C++
консольное окно не ставится на паузу, хоть все вроде бы правильно прописал ... я в с++ новичек) #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
25.07.2012, 21:11     Не получается сгенерировать массив по типу "Судоку" #2
Те строчки, что у вас закоментированы, их нужно переписать. Индексы у любого массива начинаются с нуля, а не с единицы.
C++
1
2
3
for (i=0; i<9; i++)
   for (j=0; j<9; j++)
      mass[i][j] = 0;
И в других частях программы тоже надо везде менять.

Добавлено через 7 минут
Цитата Сообщение от lionman Посмотреть сообщение
while(!mass[9][9])
Тут выход за границу массива.
C++
1
while (!mass[8][8])
Ответ Создать тему
Опции темы

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