Δημοσιεύτηκε: 05 Απρ 2012, 10:58
migf1 έγραψε:stamatiou έγραψε:
Εδώ:
- Κώδικας: Επιλογή όλων
for (i=0; !feof(fp) && 1 == fscanf(fp, "%ld", &(*buf)[i]); i++ )
γιατί γράφεις fscanf(fp, "%ld", &(*buf)[i]) και όχι fscanf(fp, "%ld", &buf[i]);
Διότι το buf το περνάω by-reference στην συνάρτηση (ως διπλό δείκτη δηλαδή ή ως *[] αν το καταλαβαίνεις καλύτερα). Οπότε μέσα στην συνάρτηση, το buffer μας είναι το *buf και όχι το buf. Δηλαδή ο πίνακάς μας είναι ο *buf και το σκέτο buf είναι η διεύθυνση του πίνακα (δεν είναι η διεύθυνση του 1ου στοιχείου του πίνακα)έγραψε:Εδώ δεν καταλαβαίνω γιατί αν είναι αρνητικό πρέπει να αυξηθεί το istart ενώ αλλιώς πρέπει να μειωθεί το iend....
Δεν μπορώ να στο εξηγήσω καλύτερα ρε συ (βάλε έναν πίνακα με 4 μόνο στοιχεία, και βάλε τον κώδικα στον gdb για να τον αναλύσεις σε εκείνο το σημείο).έγραψε:Off topic:
Να σε έχει ο Θεός καλά γιατί αν δεν με βοηθούσες στη C θα ήμουν αιώνες πίσω![]()
Φίλε Γιώργο ευχαριστώ, αλλά πιστεύω δεν ακολουθείς σωστό δρόμο. Η γνώμη μου είναι πως πριν γραφτείς σε διαγωνισμούς προγραμματισμού και πριν διαβάσεις βιβλία για hacking, θα πρέπει να κάτσεις να διαβάσεις σωστά και με σύστημα ένα καλό εισαγωγικό βιβλίο στη γλώσσα, όπως αυτό που έχουμε αναφέρει στο νήμα.
Οκ, κατάλαβα τον αλγόριθμο και πως λειτουργεί, αλλά δεν καταλαβαίνω γιατί δουλεύει με τα istart++ και iend--.