Δημοσιεύτηκε: 05 Μαρ 2012, 17:33
από Ilias95
migf1 έγραψε:Ακόμα έχεις όμως νομίζω ένα προβληματάκι, επειδή στη συνθήκη if μέσα στο κεντρικό σου for-loop ξεκινάς...
Μορφοποιημένος Κώδικας: Επιλογή όλων
for (int i = 1; i < NUM_ALPHABETA - 1; i++) {
if ((table[row+1][col] != '.' || row == NUM_ROWS-1) && (table[row-1][col] != '.' || row == 0) && \ ...

ενώ κανονικά πρέπει να πάνε πρώτα οι έλεγχοι για την τρέχουσα γραμμή (row) ...
Μορφοποιημένος Κώδικας: Επιλογή όλων
for (int i = 1; i < NUM_ALPHABETA - 1; i++) {
if ( (row == NUM_ROWS-1 || table[row+1][col] != '.') && (row == 0 || table[row-1][col] != '.') && \ ...

διότι έτσι όπως το έχεις τώρα, αν βρίσκεσαι ήδη π.χ. στην row NUM_ROWS-1, τότε το ξεκίνημα της if με: table[ row+1 ][ col ] != '.' ... βγάζει το row+1 εκτός ορίων του table.

Σωστά. Βέβαια στην προκειμένη πάντα false θα επιστρέφει, αλλά μαντεύω ότι είναι καλύτερα να γραφεί όπως λες ώστε να αποφύγουμε "παράξενες" συμπεριφορές.

Κατάλαβα και την χρησιμότητα των const και την διαφορά τους με τις σταθερές που ορίζονται με #define.
Ορισμένες απορίες προκύπτουν σχετικά με τα macros και για ποιο λόγο να τα προτιμήσουμε έναντι συναρτήσεων που θα κάνουν ακριβώς την ίδια δουλειά, αλλά πιθανότατα θα βρω τις απαντήσεις στο βιβλίο μόλις φτάσω στα κατάλληλα κεφάλαια.

Ευχαριστώ πολύ για τις αναλύσεις!