home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1985 September / 64er_Magazin_85-09_1985_Markt__Technik_de.d64 / supersort (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  104 lines

  1. 10 rem erstellen eines feldes zum
  2. 20 rem sortieren.
  3. 30 rem das erstellen kann zufaellig
  4. 40 rem oder geziehlt (durch eingabe)
  5. 50 rem erfolgen.
  6. 60 rem
  7. 70 rem sortieralgorithmen erhalten die
  8. 80 rem zeilennummern von 1000 bis 10000
  9. 90 rem sie benoetigen jeweils diesen
  10. 99 rem vorspann zur ausfuehrung.
  11. 100 rem herstellung eines arrays:
  12. 110 rem arrayvariable      - a$
  13. 120 rem schleifenvariablen - x, y, z
  14. 130 rem hilfsvariablen     - b$, c$, d$
  15. 140 rem dreiecktausch mit  - s$
  16. 150 print"[147]":clr
  17. 160 print"soll von h[146]and oder z[146]ufaellig erstellt":print
  18. 170 input"werden ";x$
  19. 180 ifx$<>"h"andx$<>"z"then150
  20. 190 ifx$="h"thengosub220:gosub1000:goto210
  21. 200 gosub220:gosub2000
  22. 210 goto4000: rem weitermachen
  23. 220 rem anzahl der elemente bestimmen
  24. 230 print:input"anzahl der elemente ";a
  25. 240 if a>10000thenprint:print"zu viele elemente":goto230
  26. 250 ifa<10thenprint:print"zu wenige elemente":goto230
  27. 255 dim a$(a)
  28. 260 input"d[146]rucker oder b[146]ildschirm ";y$
  29. 270 ify$<>"d"andy$<>"b"then260
  30. 280 ify$="d"thend=4:goto300
  31. 290 d=3
  32. 300 return
  33. 1000 rem eingabe von hand
  34. 1010 print"[147]v oder r";
  35. 1020 inputx$:ifx$<>"r"andx$<>"v"then1020
  36. 1030 r=1:x1=1:x2=a
  37. 1040 ifx$="r"thenr=-1:x1=a:x2=1
  38. 1050 z1=65:z2=65:z3=65:forx=x1tox2stepr
  39. 1060 a$(x)="":a$(x)=chr$(z1):z1=z1+1:ifz1>90thenz1=65
  40. 1062 a$(x)=chr$(z2)+a$(x):ifz1=90thenz2=z2+1:ifz2>90thenz2=65
  41. 1064 a$(x)=chr$(z3)+a$(x):ifz2=90thenz3=z3+1:ifz3>90thenz3=65
  42. 1070 nextx
  43. 1080 return
  44. 2000 rem zufaellige eingabe
  45. 2010 print"[147]"
  46. 2020 print:print"es werden jetzt"a" elemente zufaellig":print:print"ausgewaehlt"
  47. 2030 print:print"jedes element besteht aus 3 zeichen.":print:print
  48. 2040 forx=1toa
  49. 2050 a$(x)=""
  50. 2060 fory=1to3:a$(x)=a$(x)+chr$(int(rnd(ti)*25)+65):nexty
  51. 2070 nextx
  52. 2080 return
  53. 3000 rem zwischenausgabe der elemente
  54. 3010 for i=1toa-9step10
  55. 3020 for j=itoi+9:print#1,a$(j)" ";:nextj
  56. 3030 print#1:nexti: print#1
  57. 3040 return
  58. 4000 rem weitermachen
  59. 4005 open1,d
  60. 4010 print"[147]ausgabe des erstellten feldes"
  61. 4020 print
  62. 4030 gosub3000
  63. 4040 rem sortierung startet
  64. 4050 rem
  65. 10000 ti$="000000":dimzp$(a),an$(26),x(26),b$(a)
  66. 10040 forii=1to26
  67. 10050 an$(ii)="":x(ii)=0
  68. 10060 nextii
  69. 10070 ifasc(a$(1))>64thenmin=64
  70. 10080 ifasc(a$(1))>192thenmin=192
  71. 10085 for ii=1toa
  72. 10090 jj=asc(a$(ii))-min
  73. 10100 ifjj<0thenjj=26
  74. 10110 an$(jj)=an$(jj)+str$(ii+100)
  75. 10120 nextii
  76. 10130 l=1
  77. 10140 forjj=1to26
  78. 10150 x(jj)=len(an$(jj))/4
  79. 10160 ifan$(jj)=""then10210
  80. 10170 forii=1tolen(an$(jj))step4
  81. 10180 x=(val(mid$(an$(jj),ii,4))-100)
  82. 10190 b$(l)=a$(x):a$(x)="":l=l+1
  83. 10200 nextii
  84. 10210 nextjj
  85. 10220 forii=1toa
  86. 10230 a$(ii)=b$(ii):b$(ii)=""
  87. 10240 nextii
  88. 10250 y=0
  89. 10260 forl=1to26
  90. 10270 x=y+1:y=x+x(l)-1
  91. 10280 ifx(l)=0orx(l)=1then10340
  92. 10290 forjj=y-1toxstep-1:fl=-1
  93. 10300 forn=xtojj
  94. 10310 ifa$(n)>a$(n+1)thenfl=0:te$=a$(n):a$(n)=a$(n+1):a$(n+1)=te$
  95. 10320 nextn
  96. 10330 ifnotflthennextjj
  97. 10340 nextl
  98. 50000 t$=ti$:rem endebehandlung
  99. 50010 print#1
  100. 50020 gosub 3000
  101. 50030 print#1,a;" elemente"
  102. 50040 print#1:print#1:print#1,t$:close1
  103. 50050 end
  104.