hello

hello
im trying to run this program .
menu which include functions
the cases worked perfectly alone (in a separatr projects)
but when i added it to the menu it wont work !
hope you can help me
im hopless.

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
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
 #include <iostream>
using namespace std;


const int SIZE = 5;
const int COLS = 3;
const int COLS = 4;


int creatingNewNumber(int num);

void  printArray(int arr[], int size);
int SumOfTheDigitsNumber(int number);
int SumOfTheArrayNumbers(int arr[SIZE]);

void setMatrix(int mat[][COLS], int rows);
void printMatrix(int mat[][COLS], int rows);
bool sumOfRowsAndCols(int mat[][COLS], int rows);

void setMatrix(int mat[][COLS], int rows);
void printMatrix(int mat[][COLS], int rows);
bool isMatrixColsAMirror(int mat[][COLS], int rows);

bool isKarperkar(int parts[], int num);






void main()
{

	int choise;
	bool fContinue = true;

	do
	{
		cout << "choose 1 for question 1" << endl;
		cout << "choose 2 for question 3" << endl;
		cout << "choose 3 for question 6" << endl;
		cout << "choose 4 for question 7" << endl;
		cout << "choose 5 for question 9" << endl;
		cout << "choose 0 to Exit" << endl;

		cout << "Plese enter your choise" << endl;
		cin >> choise;

		switch (choise)
		{
			case 1:
			{

				
				int num;
				int temp;
				

				cout << "please enter a number" << endl;
				cin >> num;

				temp = creatingNewNumber(num);
				cout << temp << endl;

			
				break;
			}
			case 2:
			{
			
				const int SIZE = 5;
				
				int number;
				int arr[SIZE] = { 19,35,42,55,97 };
				int size;
				int sumOfDigits;
				int sumOfArrayNum;

				cout << "please enter a number" << endl;
				cin >> number;

				cout << "the sum of the number's digits is" << endl;
				sumOfDigits = SumOfTheDigitsNumber(number);
				cout << sumOfDigits << endl;

				cout << "the array numbers are: " << endl;
				printArray(arr, SIZE);

				cout << "the number of numbers which their sum is 10 are :" << endl;
				sumOfArrayNum = SumOfTheArrayNumbers(arr);
				cout << sumOfArrayNum << endl;

				break;
			}
			case 3:
			{
			
				const int COLS = 3;
				

				int mat1[3][COLS] = { { 2,1,5 } ,{ 6,7,3 },{ 0,8,0 } };
				int trueOrFalse;

				setMatrix(mat1, 3);

				cout << "the matrix is" << endl;
				printMatrix(mat1, 3);

				trueOrFalse = sumOfRowsAndCols(mat1, 3);
				cout << trueOrFalse << endl;


				break;
			}
			case 4:
			{
				
				const int COLS = 4;
				int mat[4][COLS] = { { 1,4,4,1 } ,{ 2,2,2,2 },{ 3,0,0,3 } ,{ 5,6,6,5 } };
				int isMirror;

				setMatrix(mat, 4);

				cout << "the matrix is" << endl;
				printMatrix(mat, 4);

				isMirror = isMatrixColsAMirror(mat, 4);
				cout << isMirror << endl;


				break;
			}
			case 5:
			{

				int parts[2];

				bool isKarperkar(int parts[], int num);

				for (int i = 1; i <= 111111; i++)
				{
					if (isKarperkar(parts, i))
					{
						cout << i << " " << parts[0] << "---" << parts[1] << " " << " is karperkar" << endl;
					}
				}
				break;
			}
			
			case 0:
			{
				fContinue = false;
				break;
			}
			default:
			{
				cout << "invailed option" << endl;
				break;
			}

			cout << endl;
		}

	} while (fContinue);
	cout << "Goodbye" << endl;




		system("pause");
}

int creatingNewNumber(int num)
{
	int newNum = 0;
	int temp = 0;
	int newNum1;

	while (num > 0)
	{
		newNum = newNum * 10;
		if (num % 10 == 9)
		{
			newNum += 0;
		}
		else
		{
			newNum += (num % 10) + 1;
		}
		num = num / 10;

		newNum1 = newNum;
	}

	while (newNum1 > 0)
	{
		temp = temp * 10;
		temp = temp + newNum1 % 10;
		newNum1 = newNum1 / 10;
	}

	return temp;
}



int SumOfTheDigitsNumber(int number)
{
	int sum = 0;
	int temp;
	int newNum1;

	temp = number;
	while (number > 0)
	{
		temp = number % 10;
		sum = sum + temp;
		number = number / 10;
	}

	return sum;
}

void printArray(int arr[], int size)
{
	for (int i = 0; i < size; i++)
	{
		cout << arr[i] << " ";

	}
	cout << endl;
}

int SumOfTheArrayNumbers(int arr[SIZE])
{

	int temp;
	int counter = 0;

	for (int i = 0; i < SIZE; i++)
	{
		int sum = SumOfTheDigitsNumber(arr[i]);
		if (sum == 10)
		{
			counter++;
		}
	}



	return counter;
}



void setMatrix(int mat[][COLS], int rows)
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < COLS; j++)
			mat[i][j];
	}
}
void printMatrix(int mat[][COLS], int rows)
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < COLS; j++)
			cout << mat[i][j] << " ";
		cout << endl;
	}
	cout << endl;
}

bool sumOfRowsAndCols(int mat[][COLS], int rows)
{
	bool fContinue = true;
	int counter = 0;

	for (int i = 0; i < rows && fContinue; i++)
	{
		int sumRows = 0;
		int sumCols = 0;

		for (int j = 0; j < COLS; j++)
		{
			sumRows += mat[i][j];
			sumCols += mat[j][i];
		}
		if (sumRows == sumCols)
		{
			fContinue = true;
			counter++;
		}
		else
		{
			fContinue = false;
		}

	}
	if (counter == rows)
	{
		return true;
	}
	else
	{
		return false;
	}

}

void setMatrix(int mat[][COLS], int rows)
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < COLS; j++)
			mat[i][j];
	}
}
void printMatrix(int mat[][COLS], int rows)
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < COLS; j++)
			cout << mat[i][j] << " ";
		cout << endl;
	}
	cout << endl;
}

bool isMatrixColsAMirror(int mat[][COLS], int rows)
{
	bool fContinue = true;


	for (int s = 0; s < rows; s++)
	{
		for (int i = 0, j = COLS - 1; i < rows, j>0 && fContinue; i++, j--)
		{
			if (mat[i][i + 1 - 1] != mat[i][j])
			{
				fContinue = false;
			}
		}
		if (fContinue)
		{
			return true;
		}
		else
		{
			return false;
		}

	}
}

bool isKarperkar(int parts[], int num)
{
	int pow2 = num * num;
	int temp = pow2;
	int right = 0;
	int left = temp;
	int m = 1;
	while (temp > 0) {
		right += (temp % 10) * m;
		left = temp / 10;
		temp = temp / 10;
		m *= 10;
		if (right != 0 && left + right == num)
		{
			parts[0] = left;
			parts[1] = right;
			return true;
		}
	}

	return false;
}
Hello shirshir950,

You should make sure that the program compiles before you post, so someone like me does not have to waste time fixing the errors before figuring out what is wrong.

One thing that did come out in the errors is on line 119 you defined a 2D array as being 4 x 4, but on line 256 "COLS" has a value of 3 not the 4 that it needs.

Something that could be happening here is that a function that worked in another program worked because the variables in the function definition are defined for the other program. Using the function in this new program may not be set up correctly.

Hope that helps some,

Andy
Hello shirshir950,

Once I got it to work this is what I found.

1
2
3
const int SIZE = 5;  // <--- OK.
const int COL = 3;  // <--- Changed this to work with 3 x 3 array. Otherwise it was a redefinition error.
const int COLS = 4;  // <--- OK. 


These proto types and functions OK.
1
2
3
4
5
int creatingNewNumber(int num);

void  printArray(int arr[], int size);
int SumOfTheDigitsNumber(int number);
int SumOfTheArrayNumbers(int arr[SIZE]);


These proto types and functions changed.
1
2
3
4
5
void setMatrix(int mat[][COLS], int rows);  // <--- To use a 4 x 4 2D array. OK.
void printMatrix(int mat[][COLS], int rows);  // <--- To use a 4 x 4 2D array. OK.
bool sumOfRowsAndCols(int mat[][COLS], int rows);  // <--- OK.
bool sumOfRowsAndCols3(int mat[][COL], int rows);  // <--- Changed.
bool isMatrixColsAMirror(int mat[][COLS], int rows);  // <--- OK. 


1
2
3
4
void setMatrix3(int mat[][COL], int rows);  // <--- To use a 3 x 3 2D array.
void printMatrix3(int mat[][COL], int rows);  // <--- To use a 3 x 3 2D array.

bool isKarperkar(int parts[], int num);  // <--- OK. 


In main in the switch case 3 is the only case I had to make any changes to.

After main the functions "setMatrix" and "printMatrix" were defined twice. I changed the name of the second definition, as you can see from the proto types, to use the 3 x 3 array.

The function "sumOfRowsAndCols" I had to create a second function like "set/printMatrix to work with the 3 x 3 array.

The difference between "COL" and "COLS" may not be seen right off, but there is a big difference.

Hope that helps,

Andy
thank you so much Andy !!

all work !! :)

#include <iostream>
using namespace std;


const int SIZE = 5;
const int COL = 3;
const int COLS = 4;

int creatingNewNumber(int num);
void printArray(int arr[], int size);
int SumOfTheDigitsNumber(int number);
int SumOfTheArrayNumbers(int arr[SIZE]);

void setMatrix(int mat[][COL], int rows);
void printMatrix(int mat[][COL], int rows);
bool sumOfRowsAndCols(int mat[][COL], int rows);


void setMatrix3(int mat[][COLS], int rows);
void printMatrix3(int mat[][COLS], int rows);
bool isMatrixColsAMirror(int mat[][COLS], int rows);

bool isKarperkar(int parts[], int num);


void main()
{

int choise;
bool fContinue = true;

do
{
cout << "choose 1 for question 1" << endl;
cout << "choose 2 for question 3" << endl;
cout << "choose 3 for question 6" << endl;
cout << "choose 4 for question 7" << endl;
cout << "choose 5 for question 9" << endl;
cout << "choose 0 to Exit" << endl;

cout << "Plese enter your choise" << endl;
cin >> choise;

switch (choise)
{
case 1:
{


int num;
int temp;


cout << "please enter a number" << endl;
cin >> num;

temp = creatingNewNumber(num);
cout << temp << endl;


break;
/*
choose 1 for question 1
choose 2 for question 3
choose 3 for question 6
choose 4 for question 7
choose 5 for question 9
choose 0 to Exit
Plese enter your choise
1
please enter a number
123
234
choose 1 for question 1
choose 2 for question 3
choose 3 for question 6
choose 4 for question 7
choose 5 for question 9
choose 0 to Exit
Plese enter your choise

*/
}
case 2:
{

const int SIZE = 5;

int number;
int arr[SIZE] = { 19,35,42,55,97 };
int size;
int sumOfDigits;
int sumOfArrayNum;

cout << "please enter a number" << endl;
cin >> number;

cout << "the sum of the number's digits is" << endl;
sumOfDigits = SumOfTheDigitsNumber(number);
cout << sumOfDigits << endl;

cout << "the array numbers are: " << endl;
printArray(arr, SIZE);

cout << "the number of numbers which their sum is 10 are :" << endl;
sumOfArrayNum = SumOfTheArrayNumbers(arr);
cout << sumOfArrayNum << endl;

break;
}
case 3:
{

const int COL = 3;


int mat1[3][COL] = { { 2,1,5 } ,{ 6,7,3 },{ 0,8,0 } };
int trueOrFalse;

setMatrix(mat1, 3);

cout << "the matrix is" << endl;
printMatrix(mat1, 3);

trueOrFalse = sumOfRowsAndCols(mat1, 3);
cout << trueOrFalse << endl;


break;
}
case 4:
{

const int COLS = 4;
int mat[4][COLS] = { { 1,4,4,1 } ,{ 2,2,2,2 },{ 3,0,0,3 } ,{ 5,6,6,5 } };
int isMirror;

setMatrix3(mat, 4);

cout << "the matrix is" << endl;
printMatrix3(mat, 4);

isMirror = isMatrixColsAMirror(mat, 4);
cout << isMirror << endl;


break;
}
case 5:
{

int parts[2];

bool isKarperkar(int parts[], int num);

for (int i = 1; i <= 111111; i++)
{
if (isKarperkar(parts, i))
{
cout << i << " " << parts[0] << "---" << parts[1] << " " << " is karperkar" << endl;
}
}
break;
}

case 0:
{
fContinue = false;
break;
}
default:
{
cout << "invailed option" << endl;
break;
}

cout << endl;
}

} while (fContinue);
cout << "Goodbye" << endl;




system("pause");
}

int creatingNewNumber(int num)
{
int newNum = 0;
int temp = 0;
int newNum1;

while (num > 0)
{
newNum = newNum * 10;
if (num % 10 == 9)
{
newNum += 0;
}
else
{
newNum += (num % 10) + 1;
}
num = num / 10;

newNum1 = newNum;
}

while (newNum1 > 0)
{
temp = temp * 10;
temp = temp + newNum1 % 10;
newNum1 = newNum1 / 10;
}

return temp;
}



int SumOfTheDigitsNumber(int number)
{
int sum = 0;
int temp;
int newNum1;

temp = number;
while (number > 0)
{
temp = number % 10;
sum = sum + temp;
number = number / 10;
}

return sum;
}

void printArray(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";

}
cout << endl;
}


int SumOfTheArrayNumbers(int arr[SIZE])
{

int temp;
int counter = 0;

for (int i = 0; i < SIZE; i++)
{
int sum = SumOfTheDigitsNumber(arr[i]);
if (sum == 10)
{
counter++;
}
}



return counter;
}

void setMatrix(int mat[][COL], int rows)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < COL; j++)
mat[i][j];
}
}
void printMatrix(int mat[][COL], int rows)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < COLS; j++)
cout << mat[i][j] << " ";
cout << endl;
}
cout << endl;
}

bool sumOfRowsAndCols(int mat[][COL], int rows)
{
bool fContinue = true;
int counter = 0;

for (int i = 0; i < rows && fContinue; i++)
{
int sumRows = 0;
int sumCols = 0;

for (int j = 0; j < COL; j++)
{
sumRows += mat[i][j];
sumCols += mat[j][i];
}
if (sumRows == sumCols)
{
fContinue = true;
counter++;
}
else
{
fContinue = false;
}

}
if (counter == rows)
{
return true;
}
else
{
return false;
}

}

void setMatrix3(int mat[][COLS], int rows)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < COLS; j++)
mat[i][j];
}
}
void printMatrix3(int mat[][COLS], int rows)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < COLS; j++)
cout << mat[i][j] << " ";
cout << endl;
}
cout << endl;
}

bool isMatrixColsAMirror(int mat[][COLS], int rows)
{
bool fContinue = true;


for (int s = 0; s < rows; s++)
{
for (int i = 0, j = COLS - 1; i < rows, j>0 && fContinue; i++, j--)
{
if (mat[i][i + 1 - 1] != mat[i][j])
{
fContinue = false;
}
}
if (fContinue)
{
return true;
}
else
{
return false;
}

}
}

bool isKarperkar(int parts[], int num)
{
int pow2 = num * num;
int temp = pow2;
int right = 0;
int left = temp;
int m = 1;
while (temp > 0) {
right += (temp % 10) * m;
left = temp / 10;
temp = temp / 10;
m *= 10;
if (right != 0 && left + right == num)
{
parts[0] = left;
parts[1] = right;
return true;
}
}

return false;
}
Hello shirshir950,

You are Welcome.

In the future PLEASE remember to use code tags. It makes it much easier to read your code.

If you are finished with this please put a green check on the subject so everyone will know you have your answer.

Andy
Topic archived. No new replies allowed.