Need help with this sudoku program, Having pointer issues.

Edit, forgot the question. Really need help with this program. As I'm compiling I'm getting pointer issues. I'm not sure how to match up the formats.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
  #include <iostream>
#include <cstdio>
#include "intset.cpp"
using namespace std;

typedef SetOfSmallInts Puzzle[9][9];
typedef SetOfSmallInts* PuzzleSection[9];

enum SolutionStatus {solved, unsolvable, working};

void readPuzzle(Puzzle p)
{
	char c;
	SetOfSmallInts s = rangeSet(1,9);
	for(int i =0; i<9; i++)
	{
		for(int j=0; j < 9; j++)
		{
			cin >> c;
			if(c == '-')
			{ 
				p[i][j]=s;
			}
			else
			{
				p[i][j] = singletonSet(c-'0');
			}
		}
	}
}

void showSet(PuzzleSection R)
{
	for(int i = 1; i <= 9; i++)
	{	
		if(member(i, **R))
		{
			cout << i;
		}
	}
}


void printPuzzle(Puzzle p)
{
  int i, j;
  for(i = 0; i < 9; i++) 
  {
	if (i==3 || i == 6)
	{
		cout << "\n";
	}
    	for(j = 0; j < 9; j++) 
    	{
		if (j == 3 || j == 6) cout << " ";
		if(isEmpty(p[i][j]))
		{
			cout << 0;
		}
		else if(isSingleton(p[i][j]))
		{
			showSet(&(p[i][j]));
		}
		else
		{
			cout << "-";
		}
    	}
	cout << "\n";
	
  }
}



void showPuzzle(Puzzle p)
{
  int i, j;

  for(i = 0; i < 9; i++) 
  {
    for(j = 0; j < 9; j++) 
    {
	showSet(p[i][j]);
    }
    cout << "\n";
  }
}
/****************************************************************
 *                     SetOfSmallInts                           *
 ****************************************************************
 * A value of type SetOfSmallInts is a set of the integers from *
 * 1 to 9.  When you create a variable of type SetofSmallInts,  *
 * it initially holds an empty set.                             *
 ****************************************************************/

struct SetOfSmallInts
{
  int ival;

  SetOfSmallInts()
  {
    ival = 0;
  }
};

/****************************************************************
 *                     emptySet                                 *
 ****************************************************************
 * emptySet is an empty set.                                    *
 ****************************************************************/

extern const SetOfSmallInts emptySet;

/****************************************************************
 *                     singletonSet                             *
 ****************************************************************
 * singletonSet(x) is the set {x}.                              *
 ****************************************************************/

SetOfSmallInts singletonSet(int x);

/****************************************************************
 *                     rangeSet                                 *
 ****************************************************************
 * rangeSet(x,y) is the set {x,x+1,...,y}.  For example,        *
 * rangeSet(2,5) is the set {2,3,4,5}.                          *
 ****************************************************************/

SetOfSmallInts rangeSet(int x, int y);

/****************************************************************
 *                     size                                     *
 ****************************************************************
 * size(s) returns the number of members of set s.              *
 ****************************************************************/

int size(SetOfSmallInts s);

/****************************************************************
 *                     isEmpty                                  *
 ****************************************************************
 * isEmpty(s) is true if s is an empty set.                     *
 ****************************************************************/

bool isEmpty(SetOfSmallInts s);

/****************************************************************
 *                     isSingleton                              *
 ****************************************************************
 * isSingletonSet(s) is true if s is a singleton set.  That is, *
 * it is true if s has exactly one member.                      *
 ****************************************************************/

bool isSingleton(SetOfSmallInts s);

/****************************************************************
 *                     member                                   *
 ****************************************************************
 * member(x,s) is true if x is a member of s.                   *
 ****************************************************************/

bool member(int x, SetOfSmallInts s);

/****************************************************************
 *                     setDifference                            *
 ****************************************************************
 * setDifference(s,t) is the set of all numbers that are in s,  *
 * but not in t.                                                *
 ****************************************************************/

SetOfSmallInts setDifference(SetOfSmallInts s, SetOfSmallInts t);

/****************************************************************
 *                     setUnion                                 *
 ****************************************************************
 * setUnion(s,t) is the set of all numbers that are in either s *
 * or t (or both).                                              *
 ****************************************************************/

SetOfSmallInts setUnion(SetOfSmallInts s, SetOfSmallInts t);

/****************************************************************
 *                     setIntersection                          *
 ****************************************************************
 * setIntersection(s,t) is the set of all numbers that are in   *
 * both s and t.                                                *
 ****************************************************************/

SetOfSmallInts setIntersection(SetOfSmallInts s, SetOfSmallInts t);

/****************************************************************
 *                     insert                                   *
 ****************************************************************
 * insert(x,s) returns the set that you get by adding x to      *
 * set s.  So it is equivalent to setUnion(s, singletonSet(x)). *
 ****************************************************************/

SetOfSmallInts insert(int x, SetOfSmallInts s);

/****************************************************************
 *                     remove                                   *
 ****************************************************************
 * remove(x,s) returns the set that you get by removing x from  *
 * set s.  So it is equivalent to                               *
 * setDifference(s, singletonSet(x)).                           *
 ****************************************************************/

SetOfSmallInts remove(int x, SetOfSmallInts s);

/****************************************************************
 *                     smallest                                 *
 ****************************************************************
 * smallest(s) returns the smallest member of s.  If s is empty,*
 * then smallest(s) returns 0.                                  *
 ****************************************************************/

int smallest(SetOfSmallInts s);
Last edited on
Topic archived. No new replies allowed.