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

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

Восстановить пароль Регистрация
 
lionman
Сообщений: n/a
25.07.2012, 20:31     Не получается сгенерировать массив по типу "Судоку" #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     Не получается сгенерировать массив по типу "Судоку"
Посмотрите здесь:

Ругань по типу "overloaded is ambiguous" C++
ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору C++
Сгенерировать число "1" или "2" C++
Ошибка в решении задачи "Судоку" (acmp) C++
C++ Не получается переопределить операторы "+" и "="
не получается передать массив из "void Vvod" в "void CalculatingEstimates" C++
Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" C++
Массив "hotel", в который пользователь добавляет "жильцов" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Intel~lect
 Аватар для 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])
Yandex
Объявления
25.07.2012, 21:11     Не получается сгенерировать массив по типу "Судоку"
Ответ Создать тему
Опции темы

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