Δημοσιεύτηκε: 02 Σεπ 2011, 15:24
Star_Light έγραψε:
Πιστευω πως τον δεικτη στον αλγοριθμο τον μειωνεις.... επειδη ετσι και μονο ετσι θα μπορεσει να γινει η επιστροφη της τιμης μετα την συγκριση (γειτονικων χαρακτηρων).
ΠΧ => s1[]="a" & s2[]="ab"
αρχικα ο s1 δειχνει στο a και ο s2 to ιδιο (μετα ο s2 αμεσως αυξανει κατα ενα και δειχνει στον b
στο τελευταιο return ομως επειδη δεν έχουμε φθασει ακομη στο 2ο βήμα δηλαδη στον 2ο χαρακτηρα παρα ειμαστε μονο στους πρωτους
πριν γινει η αφαιρεση και φυγει το αποτελεσμα απο το τελικο return (επιστραφει δηλαδη) θα πρεπει ο δεικτης να αφαιρεθει μια θεση
δηλαδη να παει στο a παλι συνεπως a-a = 0
Πολύ σωστά! ΕΥΓΕ!
Με άλλα λόγια, επειδή στη συνθήκη του while αυξάνεται μονάχα o s2 (χωρίς να ακολουθεί ο s1, αυτός ακολουθεί μονάχα όταν μπει η ροή μέσα στο σώμα του while, και συγκεκριμένα στη συνθήκη του if) τότε μετά την τελευταία επανάληψη του loop (που η ροή διακόπτεται στη συνθήκη του, πριν μπει στο σώμα του) ο s2 έχει φύγει ένα χαρακτήρα πιο δεξιά από αυτόν που του αντιστοιχεί στο 1ο string (δηλαδή τον *s1)... άρα πρέπει να τον φέρουμε μια θέση πίσω, ώστε να αφαιρεθεί ο σωστός *s2 από τον *s1.
Αυτό το πρόβλημα δεν υφίσταται με τον μετρητή γιατί εκεί αυξάνονται ταυτόχρονα τα 2 strings στη συνθήκη του while-loop (εκεί μπερδεύτηκα κι εγώ Γιώργο και σου είπα λανθασμένα αρχικά πως δεν λειτουργεί ο κώδικάς σου).
Αν είμαστε οκ, να προχωρήσουμε στο επόμενο θέμα (τους έξτρα ελέγχους).