alphabetize lists

Please use this Board for QBasic related requests ( file research, programming, etc.)

Moderators:Administrator, Global Moderator

Post Reply
Guest
alphabetize lists

Post by Guest » Sun May 26, 2002 2:21 pm

How would you alphabetize a list from a .txt file?

PLEASE RESPOND SOON!!!!!!!!!!!

Guest

Re: Alpebatizing lists

Post by Guest » Mon Jun 24, 2002 8:16 am

i have no idea, but if you find out, can you email me? thanx

Jehovah
Jr. Member
Posts:24
Joined:Tue Oct 29, 2002 10:54 pm
Location:Boise, Idaho

Re: Alpebatizing lists

Post by Jehovah » Fri Nov 01, 2002 10:58 pm

I know how to do it, but class is almost over, will respond tomarow at 11:30 AM              
 

Jehovah
Jr. Member
Posts:24
Joined:Tue Oct 29, 2002 10:54 pm
Location:Boise, Idaho

Re: Alpebatizing lists

Post by Jehovah » Fri Nov 01, 2002 11:00 pm

correction, monday at 11:30 AM

Jehovah
Jr. Member
Posts:24
Joined:Tue Oct 29, 2002 10:54 pm
Location:Boise, Idaho

Re: Alpebatizing lists

Post by Jehovah » Mon Nov 04, 2002 12:45 pm

'Please note: this is most likely not the best way to do 'it, I have never done this until now... but providing this 'is not in a tite loop, it goes wrather fast.    [This was 'writen in qb4.5]

'You are free to change/destribute this file without giving me credit.

'all it does is load the file into a matrix, then go threw 'and see if the last line's first is less, if it is, then it swaps 'the two.  the enforce loop is to make sure everything 'goes smoothly, but during testing, only moved blank 'spaces to the end of the file (top or bottom, don't 'know).  as it is, it is not case sensitive.  if you want it to 'be, you cannot just remove the lcase$ on all of the if 'statements.  this is because ALL of the upper case 'alphabet comes before lower on the ascii table.  to 'make it be case sensitiv, you must make it so that 'when it encounters 2 like values, it finds wich is less 'without the lcase$, if they are the same, don't swap, if 'one is then swap in the respective direction.  this 'program was only tested on small lists since I am lazy 'and did not want to spend time on testing 7 minuts
'worth of code (that's 'bout how long it took).  I will 'admit, this took a little more thought then I expected it 'too since I have never done it.  But it was still wrather 'easy.  If you need more help on the ascii table or I/O
'feel free to ask since I use both quit often in my 'programs.

'$DYNAMIC
DIM file(1) AS STRING      'can change to be dynamic by using '$' instead of as clause
'$STATIC
file$ = "C:\windows\desktop\test.txt"
OPEN file$ FOR INPUT AS 1
DO
  LINE INPUT #1, test$
  lines = lines + 1
LOOP WHILE NOT EOF(1)

CLOSE 1
OPEN file$ FOR INPUT AS 1
REDIM file(lines)

FOR loader = 1 TO lines
  LINE INPUT #1, file(loader)
  IF file(loader) = "" THEN file(loader) = " "
NEXT loader
CLOSE 1

FOR enforce = 1 TO lines
   FOR check1 = 2 TO lines
       tline$ = file(check1)
       IF ASC(LCASE$(LEFT$(tline$, 1))) < ASC(LCASE$(LEFT$(file(check1 - 1), 1))) THEN SWAP file(check1), file(check1 - 1)
       IF ASC(LCASE$(LEFT$(tline$, 1))) = ASC(LCASE$(LEFT$(file(check1 - 1), 1))) THEN
           IF LEN(tline$) < LEN(file(check1 - 1)) THEN SWAP file(check1), file(check1 - 1)
           IF LEN(tline$) = LEN(file(check1 - 1)) THEN
               FOR check2 = 1 TO LEN(tline$)
                   IF ASC(LCASE$(MID$(tline$, check2, check2))) < ASC(LCASE$(MID$(file(check1 - 1), check2, check2))) THEN SWAP file(check1), file(check1 - 1)
               NEXT check2
           END IF
       END IF
   NEXT check1
NEXT enforce

OPEN file$ FOR APPEND AS 1
PRINT #1, blank$
PRINT #1, blank$
titlebar$ = "Alphabitazed by Jehovah"
PRINT #1, titlebar$
PRINT #1, blank$
FOR printer = 1 TO lines
  PRINT #1, file(printer)
NEXT printer
CLOSE 1

Post Reply