Δημοσιεύτηκε: 25 Αύγ 2011, 16:32
Ποιο εννοείς δεν έχεις ξαναδεί;
ΥΓ1. Πάλι το άφησες χωρίς '\0' στο τέλος το s στην is_vowel. Όσο για τη νέα λύση, δεν την δοκίμασα αλλά φαίνεται σωστή!
Το δύσκολο τώρα είναι να κάνεις τη δουλειά in-place, δηλαδή με ένα μόνο loop που θα διατρέχει το s και θα κάνει τις αναγκαίες ανακατατάξεις χαρακτήρων σε πραγματικό χρόνο.
ΥΓ2. Και μια επισήμανση για τη χρήση του strlen(inbuf) που έχεις μέσα στις συνθήκες του for... έτσι όπως είναι τώρα σε ΚΑΘΕ επανάληψη του κάθε loop επανα-υπολογίζει το μήκος του inbuf (φαντάσου π.χ. να περιείχε το inbuf τα περιεχόμενα ενός αρχείου μεγέθους 100Mb... σε κάθε επανάληψη του κάθε for μετράς 2 φορές 100+ εκατομμύρια bytes... κι έχεις 3 for στο πρόγραμμά σου που έχουν το strlen(inbuf) μέσα στη συνθήκη τους. Η λύση είναι να υπολογίσεις μια και μόνο φορά το μήκος του inbuf σε μια μεταβλητή (π.χ. leninbuf = strlen(inbuf) ) και κατόπιν να χρησιμοποιείς αυτή τη μεταβλητή μέσα στις συνθήκες των for.
ΥΓ1. Πάλι το άφησες χωρίς '\0' στο τέλος το s στην is_vowel. Όσο για τη νέα λύση, δεν την δοκίμασα αλλά φαίνεται σωστή!
ΥΓ2. Και μια επισήμανση για τη χρήση του strlen(inbuf) που έχεις μέσα στις συνθήκες του for... έτσι όπως είναι τώρα σε ΚΑΘΕ επανάληψη του κάθε loop επανα-υπολογίζει το μήκος του inbuf (φαντάσου π.χ. να περιείχε το inbuf τα περιεχόμενα ενός αρχείου μεγέθους 100Mb... σε κάθε επανάληψη του κάθε for μετράς 2 φορές 100+ εκατομμύρια bytes... κι έχεις 3 for στο πρόγραμμά σου που έχουν το strlen(inbuf) μέσα στη συνθήκη τους. Η λύση είναι να υπολογίσεις μια και μόνο φορά το μήκος του inbuf σε μια μεταβλητή (π.χ. leninbuf = strlen(inbuf) ) και κατόπιν να χρησιμοποιείς αυτή τη μεταβλητή μέσα στις συνθήκες των for.