12-01-2018, 12:13
|
|
|
|
חבר מתאריך: 25.10.05
הודעות: 1,508
|
|
Segmentation fault (core dumped)
היי אני מקבל את השגיאה:
קוד:
Segmentation fault (core dumped)
בתוכנית C שכתבתי, אחרי קצת כיוון מ stackoverflow כנראה הבעיה היא במשתנה usedNumber (קוד בהמשך) כי כשאני מוריד את כל המופעים שלו השגיאה נעלמת אבל אני לא יודע מה הבעייתיות בקוד ואיך לכתוב נכון , ואשמח לעזרה:
זו הפונקציה שזה קורס בה:
קוד:
void solveSudoku() {
int *usedNumber;
int goBack = 0;
int i,j;
int index, index2;
int x;
for ( x = 0; x < demi * demi; x++) {
index = ((int)(x / demi)) * demi ;
index2 = x % demi * demi;
for (i = index; i < index + demi; i++) {
printf("passed 1");
if (goBack) {
if (i == index - 1) {
x -= 2;
break;
}
i -= 2;
}
printf("passed 2");
for (j = index2; j < index2+ demi; j++) {
if (j == index2 - 1) {
i -= 2;
break;
}
if (sudoku[i][j].isGiven) {
if (goBack) {
j -= 2;
}
continue;
}
if (putNumber(i, j, usedNumber)){
goBack = 0;
triedNumbers[i][j][*usedNumber - 1] = 1;
continue;
}
printf("putting error");
sudoku[i][j].val = 0;
goBack = 1;
triedNumbers[i][j][0] = 0;
triedNumbers[i][j][1] = 0;
triedNumbers[i][j][2] = 0;
triedNumbers[i][j][3] = 0;
j -= 2;
}
}
}
}
הבעיה היא שזה לא מדפיס את הדיבאג בכלל לא משנה באיזה שלב אני שם את זה אפילו בתחילת הפונקציה ולא ידעתי מה גרם לקריסה.
בפונקציה putNumber אני עושה *usedNumber = num כאשר num הוא int.
אשמח לעזרה
_____________________________________
חתימתי העצומה בגודלה הוסרה ע"י השליט הבלתי מעורער שימי, למי שיש בעיה שיפנה אליו.
ד אַל תַּעַן כְּסִיל כְּאִוַּלְתּוֹ פֶּן תִּשְׁוֶה לּוֹ גַם אָתָּה. ה עֲנֵה כְסִיל כְּאִוַּלְתּוֹ פֶּן יִהְיֶה חָכָם בְּעֵינָיו
|