Προσπαθω να γραψω ενα προγραμμα σε C(σε linux) το οποιο θα ανοιγει ενα συγκεκριμενο αρχειο απο το δισκο , θα διαβαζει πχ. 3 ονοματα που εχω γραψει σε αυτο(καθε ονομα και νεα γραμμη) δηλαδη θα διαβαζει τους χαρακτηρες καθε γραμμης και θα μου τα εμφανιζει στην οθονη ταξινομημενα κατα αυξουσα σειρα.
Βασικα κανω χρηση της fopen("file","r") για να ανοιξω το αρχειο , και για την ταξινομηση βρηκα τον αλγοριθμο bubblesort.
Το προβλημα μου ειναι πως (και αν) μπορω τις γραμμες που διαβαζω (τα ονοματα δλδ) απο το αρχειο να τα βαζω σε ενα πινακα τον οποιο θα χρησιμοποιει ο αλγοριθμος bubblesort για να κανει την ταξινομηση.
Ειμαι λιγο ασχετος απο C και ισως να ρωταω πραγματα που ειναι απλα και μπερδευομαι μονος μου ή πραγματα που δεν γινονται.
Οποιος μπορει ας βοηθησει μπας και μαθουμε και εμεις κατι
Ευχαριστω!
Εμφάνιση 1-7 από 7
-
03-11-07, 14:07 Ερωτηση για Προγραμμα σε C #1
-
03-11-07, 17:11 Απάντηση: Ερωτηση για Προγραμμα σε C #2
Φυσικά και μπορείς να χρησιμοποιήσεις έναν δισδιάστατο πίνακα γι' αυτόν το σκοπό, ο οποίος θα πρέπει να έχει αριθμό γραμμών τουλάχιστον όσες είναι και οι γραμμές του αρχείου. Το θέμα είναι ότι αν δεν ξέρεις από πριν τον αριθμό γραμμων του αρχείου θα πρέπει είτε ο πίνακας να δηλωθεί ως στατικός με αρκούντως μεγάλες διαστάσεις είτε (το πιο σωστό) να μετρήσεις πρώτα τον αριθμό γραμμών του αρχείου και στη συνέχεια να δημιουργήσεις τον πίνακα με malloc.
Επίσης, έχε υπ'όψιν σου ότι θα πρέπει να παραλλάξεις λίγο τον αλγόριθμο φυσαλίδας, αφού για λεξικογραφική ταξινόμηση δεν αρκεί να συγκρίνεις μόνο τον πρώτο χαρακτήρα που έχουν δύο ονόματα. Αν αυτός βρεθεί ίδιος, πρέπει ο αλγόριθμος να πηγαίνει και στον επόμενο, και στον επόμενο κ.ο.κ., μέχρι είτε να βρεθεί διαφορά είτε να φτάσεις στο τέλος του ενός από τα δύο ονόματα που συγκρίνεις...
-
03-11-07, 17:17 Απάντηση: Ερωτηση για Προγραμμα σε C #3
Βασικα οι γραμμες του αρχειου δεν θα ειναι πανω απο 20. Μπορω φυσικα να βαλω οτι θα ειναι πχ.20.
Αυτο που δεν μπορω να βρω (με εντολες) ειναι αφου ανοιξω το αρχειο πως θα βαλω αυτα που εχει το αρχειο στον πινακα που μου ειπες οτι μπορω να χρησιμοποιησω....
-
03-11-07, 17:38 Απάντηση: Ερωτηση για Προγραμμα σε C #4
Από το απόσπασμα που έκανα quote, δίνεται η εντύπωση ότι ήδη γνωρίζεις πώς να διαβάζεις την κάθε γραμμή του αρχείου. Αλλά τελικά έχεις καλέσει μόνο μία fopen() απ' ό,τι λες τώρα. Είδες πώς η έλλειψη ακριβολογίας δεν βοηθάει να παίρνουμε σωστές και ολοκληρωμένες απαντήσεις στα ερωτήματά μας;
Το επόμενο βήμα από το σημείο που βρίσκεσαι είναι να χρησιμοποιήσεις εντολή που διαβάζει απευθείας από το αρχείο και αποθηκεύει κάπου αλλού. Εγώ το κάνω χρησιμοποιώντας συνήθως μία fgets() που διαβάζει επαναληπτικά (με while βρόχο, για έλεγχο της άφιξης στο τέλος του αρχείου) την κάθε γραμμή μέσα σε έναν μονοδιάστατο πίνακα που παίζει το ρόλο linebuffer. Μέσα στο βρόχο αρκεί να γίνεται αντιγραφή με strcpy() του περιεχομένου του linebuffer στην κατάλληλη γραμμή ( => χρειάζεσαι μετρητή για τον τρέχοντα αριθμό γραμμής) του δισδιάστατου πίνακα. Αν θες παράδειγμα με κώδικα, πες το...
-
03-11-07, 17:47 Απάντηση: Ερωτηση για Προγραμμα σε C #5
Έχεις δίκαιο δεν το διατύπωσα σωστά.
Ξέρω να διαβάζω τα δεδομένα από το αρχείο απλά δεν ξέρω πως τα γράφω μετά στο πινακα. Αν υπάρχει κάποιο παράδειγμα με κώδικα θα βοηθούσε πολύ.
Σε ευχαριστώ για τη βοήθεια
-
03-11-07, 18:19 Παράδειγμα - Ανάγνωση αρχείου - Γραμμή - Πίνακας - Γλώσσα C #6
Ορίστε ένα παραδειγματάκι στα γρήγορα. Συμπληρώνεις ενδιάμεσα κώδικα που χρειάζαεσαι κατά το δοκούν:
Κώδικας:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { FILE *infile; char linebuffer[50], linetable[20][50]; int linecounter = 0; if(!(infile = fopen(argv[1], "r"))) { printf("\nERROR: File %s not existant or could not be opened.\n\n", argv[1]); return 1; } while((fgets(linebuffer, 50, infile))) { /* Στο τέλος του αρχείου, η fgets επιστρέφει NULL και ο βρόχος τερματίζεται */ strcpy(linetable[linecounter], linebuffer); linecounter++; } fclose(infile); /* Εδώ οι εντολές που εργάζονται πάνω στον πίνακα linetable */ return 0; }
-
03-11-07, 19:05 Απάντηση: Ερωτηση για Προγραμμα σε C #7
Αυτό ακριβώς έψαχνα.
Ευχαριστώ πολύ.
Παρόμοια Θέματα
-
Ερωτηση για προγραμμα αναπαραγωγης και υποτιτλους
Από sportguy στο φόρουμ Software γενικάΜηνύματα: 5Τελευταίο Μήνυμα: 13-07-08, 22:22 -
Ποιο πρόγραμμα για screen capture με ήχο και για MSN;
Από Director CrisAK στο φόρουμ Software γενικάΜηνύματα: 14Τελευταίο Μήνυμα: 03-08-07, 22:49 -
Γρήγορη ερώτηση => Πρόγραμμα ελέγχου θερμοκρασίας?
Από JoeBar στο φόρουμ Laptop, tablet και mobile computingΜηνύματα: 7Τελευταίο Μήνυμα: 22-07-06, 15:20 -
Ερώτηση για πρόγραμμα menu
Από foncastel στο φόρουμ Web authoring, development & web designΜηνύματα: 3Τελευταίο Μήνυμα: 11-05-06, 11:24
Bookmarks