Αρχεία κεμένου σε Visual C#

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
Ισοβίτης
Venus Former Team Member
Posts: 1262
Joined: Sat Apr 21, 2007 5:45 pm
Gender:
Location: Πίσω από τα σίδερα
Contact:

Αρχεία κεμένου σε Visual C#

Post by Ισοβίτης » Sat Jun 16, 2007 8:58 pm

Γεια σας.

Έχω το εξής πρόβλημα, καθότι αρχάριος με τη C#:

Ανοίγω με ένα πρόγραμμα κάποιο αρχείο κεμένου για ανάγνωση. Το αρχείο κειμένου έχει λέξεις τη μία κάτω από την άλλη. Σε κάθε γραμμή του υπάρχει μόνο μία λέξη.

Παράδειγμα:

Code: Select all

ΚΑΛΗΜΕΡΑ
ΠΛΗΡΟΦΟΡΙΚΗ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΒΟΗΘΕΙΑ
Θέλω το πρόγραμμα να διαβάζει μία συγκεκριμένη γραμμή και να αποθηκεύει το περιεχόμενό της σε ένα στρινγκ χαρακτήρων. Π.χ. αν θέλω να διαβάζει την 3η γραμμή, τότε να αποθηκεύει σε στρινγκ τη λέξη "ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ".

Δοκίμασα τον εξής κώδικα, αλλά μάλλον δε δουλεύει, παρότι δεν μου εμφανίζεται λάθος κατά τη μεταγλώττιση:

Code: Select all

StreamReader wf = File.OpenText("Words.txt");   //Άνοιγμα αρχείου λέξεων

int i = 0;  //i είναι ο μετρητής των γραμμών

do
{
    i++;                                    
    wf.ReadLine();           
    if (i == 3)              
           Lexi = wf.ReadLine();  //Lexi είναι η ζητούμενη λέξη  και έχει δηλωθεί ως στρινγκ                             
} while (i < 3);  
               
wf.Close();     //Κλείσιμο αρχείου λέξεων                                       
Όποιος ξέρει ποιος είναι ο κατάλληλος κώδικας με σώζει...
Erevodifwntas
Gbyte level
Gbyte level
Posts: 1098
Joined: Thu Apr 22, 2004 2:18 pm
Academic status: Alumnus/a
Gender:
Location: In a Long Time Ago in A Galaxy far far away
Contact:

Post by Erevodifwntas » Sat Jun 16, 2007 9:41 pm

Code: Select all

StreamReader wf = File.OpenText("Words.txt");   //Άνοιγμα αρχείου λέξεων 

int i = 0;  //i είναι ο μετρητής των γραμμών 

do 
{ 
    i++;                                    
    //wf.ReadLine();            
    if (i == 3)              
           Lexi = wf.ReadLine();  //Lexi είναι η ζητούμενη λέξη  και έχει 
//δηλωθεί ως στρινγκ 
//το else που σε σώζει ;-)
    else
            wf.ReadLine();   δηλωθεί ως στρινγκ                              
} while (i < 3);  
                
wf.Close();     //Κλείσιμο αρχείου λέξεων 
δεν το έχω τρέξει αλλά μου φαίνεται λογικό
Go To Statement Considered Harmful (Τιτλος δημοσίευσης του Edsger Dijkstra).

my personal site
User avatar
elsupreme
Gbyte level
Gbyte level
Posts: 1573
Joined: Mon Nov 21, 2005 10:16 pm
Academic status: N>4
Gender:

Post by elsupreme » Sat Jun 16, 2007 10:48 pm

Ωραίος, με πρόλαβες, θα αντιπρότεινα αυτό :

Code: Select all

StreamReader wf = File.OpenText("Words.txt");   //Άνοιγμα αρχείου λέξεων

for(int i=0;i<3;i++)
{                                  
    Lexi = wf.ReadLine(); //Lexi είναι η ζητούμενη λέξη  και έχει δηλωθεί ως στρινγκ                             
}
               
wf.Close();     //Κλείσιμο αρχείου λέξεων  
Αν όπου 3 βάλεις μια μεταβλητή έχεις και έτοιμο function/συνάρτηση.(Αντίστοιχα και για του Erevodifwnta τον κώδικα)
"Must float like lotus on river... and kill old lady!"
Erevodifwntas
Gbyte level
Gbyte level
Posts: 1098
Joined: Thu Apr 22, 2004 2:18 pm
Academic status: Alumnus/a
Gender:
Location: In a Long Time Ago in A Galaxy far far away
Contact:

Post by Erevodifwntas » Sun Jun 17, 2007 12:25 am

Προσωπικά θα προτιμούσα να τα βάζει όλες τις λέξεις σε έναν πίνακα και μετά να παίρνει τη θέση από τον πίνακα.... (είναι αρκετά πιο γρήγορο από το να διαβάζει από αρχείο... αλλά θέλει περισσότερη μνήμη ;-)
Go To Statement Considered Harmful (Τιτλος δημοσίευσης του Edsger Dijkstra).

my personal site
User avatar
adam98
Gbyte level
Gbyte level
Posts: 1078
Joined: Tue May 02, 2006 2:58 pm

Post by adam98 » Sun Jun 17, 2007 3:43 pm

Erevodifwntas wrote:Προσωπικά θα προτιμούσα να τα βάζει όλες τις λέξεις σε έναν πίνακα και μετά να παίρνει τη θέση από τον πίνακα.... (είναι αρκετά πιο γρήγορο από το να διαβάζει από αρχείο... αλλά θέλει περισσότερη μνήμη ;-)
Ασε που ανα ειναι πολυ μεγαλο το αρχειο(της ταξης των gigabyte) μπορει να υπαρχει προβλημα στο caching
H δύναμη της εξαπάτησης και της καταστροφής μπορεί να γοητεύσει μόνο μέτριους και αδύναμους
Τhe lessons we learn from pain are the ones that make us the strongest
Erevodifwntas
Gbyte level
Gbyte level
Posts: 1098
Joined: Thu Apr 22, 2004 2:18 pm
Academic status: Alumnus/a
Gender:
Location: In a Long Time Ago in A Galaxy far far away
Contact:

Post by Erevodifwntas » Sun Jun 17, 2007 5:54 pm

adam98 wrote: Ασε που ανα ειναι πολυ μεγαλο το αρχειο(της ταξης των gigabyte) μπορει να υπαρχει προβλημα στο caching
Δε νομίζω ότι μιλάμε για τέτοια μεγέθη, διαφορετικά ο αλγόριθμος του Ισοβίτη θα είχε τεράστια προβλήματα ταχύτητας ;-) (θα είχε νόημα το διάβασμα από αρχεία αν υπήρχε κάποιο Index κ.τ.λπ. που χρησιμοποιούν οι βάσεις δεδομένων (βλ. Βασσάλος)
Go To Statement Considered Harmful (Τιτλος δημοσίευσης του Edsger Dijkstra).

my personal site
Post Reply

Return to “Προγραμματισμός”