Δημοσιεύτηκε: 05 Μαρ 2012, 16:38
migf1 έγραψε:
...
Α btw, μια που το είπα αυτό, έχουμε και οι 2 μια σημαντική έλλειψη στους κώδικές μας... δεν εξετάζουμε ο αριθμός κινήσεων να ΜΗΝ ξεπερνάει το μέγιστο πλήθος του πίνακά μας (NROWS * NCOLS). Αν στο ALPHABET χρησιμοποιήσουμε πάνω από 100 γράμματα, τα προγράμματά μας κάποια στιγμή θα κρασάρουν! . Ένας εύκολος τρόπος να το δοκιμάσουμε είναι να αλλάξουμε τα NROWS και NCOLS σε 3 και 3 (από 10 και 10). Θα έχουμε έτσι 9 συνολικά τετράγωνα στον πίνακα, αλλά 26 επιτρεπόμενες κινήσεις... ΜΠΟΥΜ !!!!!
Το διόρθωσα μόλις, στην 2η λύση μου, προσθέτοντας το macro...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#define myMIN(x,y) ( (x) < (y) ? (x) : (y) )
και αρχικοποιώντας κατάλληλα την σταθερά NMOVES στην αρχή της main()...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
...
/* total # of moves allowed */
const int NMOVES = myMIN( NROWS*NCOLS, (int)(strlen(USED) - 1) );
...
Ilias95 έγραψε:migf1 έγραψε:ΥΓ. Έχω παρατηρήσει πως αποφεύγεις τη χρήση συναρτήσεων, γιατί; Οι συναρτήσεις είναι ο θεμελιώδεις λίθος των procedural γλωσσών.
Γιατί έχω διαβάσει μέχρι το 8ο κεφάλαιο και οι συναρτήσεις είναι στο 9ο.
Παρ' όλα αυτά κατάλαβα πως δουλεύουν στους κώδικες που παρέθεσες.
Α, λέω κι εγώ
Ilias95 έγραψε:
Θα δω την τελευταία λύση σου και τα ποστ σου καθώς και το λινκ που παρέθεσε ο konnn και θα επανέλθω.
Πάω κι εγώ σπίτι.