home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1986 May / 64er_Magazin_86-05_1986_Markt__Technik_de.d64 / matrimult (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  86 lines

  1. 10 rem ***** matrizenmultiplikation *****
  2. 20 poke 53280,0:poke 53281,0
  3. 30 rem ----- eingabe der parameter -----
  4. 40 printchr$(147)chr$(17)chr$(17)chr$(18)"parameter der matrizen:"
  5. 50 printchr$(17)chr$(17)"name der 1.matrix"tab(32);:inputa$
  6. 60 print"anzahl spalten(s1) u. zeilen(z1)"tab(31);:inputs1,z1
  7. 70 printchr$(17)"name der 2.matrix"tab(32);:inputb$
  8. 80 print"anzahl spalten(s2) u. zeilen(z2)"tab(31);:inputs2,z2
  9. 90 printchr$(17)chr$(17)"fuer die ausgabe der matrix geben sie bitte an:"
  10. 100 print"verwenden sie einen 80-zeichen-bildschirm (j/n)"
  11. 110 getd$:if d$<>"j" and d$<>"n" then 110
  12. 120 if d$="j" then s=2
  13. 130 s=1
  14. 140 rem ----- pruefung auf zulaessigkeit -----
  15. 150 ifs1<>z2then printchr$(17)chr$(17)chr$(18)"s1 muss gleich z2 sein !":goto50
  16. 160 rem ---- array-definitionen ----
  17. 170 dima(z1,s1),b(z2,s2),c(z1,s2)
  18. 180 rem ---- eingabe der elemente: 1.matrix ----
  19. 190 printchr$(147)
  20. 200 for i=1 to z1:rem zeilenindex
  21. 210 :for j=1 to s1:rem spaltenindex
  22. 220 ::printa$"("i","j") ="tab(20);:inputa(i,j)
  23. 230 :next j
  24. 240 next i
  25. 250 rem -------------------------  2.matrix ----
  26. 260 printchr$(17)chr$(17)
  27. 270 for i=1 to z2
  28. 280 :for j=1 to s2
  29. 290 ::printb$"("i","j") ="tab(20);:inputb(i,j)
  30. 300 :next j
  31. 310 next i
  32. 320 rem ---- berechnung ergebnismatrix ----
  33. 330 for i=1 to z1
  34. 340 :for j=1 to s2:c(i,j)=0
  35. 350 ::for k=1 to s1
  36. 360 :::c(i,j)=c(i,j)+a(i,k)*b(k,j)
  37. 370 ::next k
  38. 380 :next j
  39. 390 next i
  40. 400 rem ---- matrixanzeige menue ----
  41. 410 printchr$(147)
  42. 420 printchr$(17)chr$(17)chr$(17)chr$(18)"matrix zeigen:"
  43. 430 printchr$(17)chr$(17)"matrix"tab(12)a$tab(25)"1"
  44. 440 printchr$(17)"matrix"tab(12)b$tab(25)"2"
  45. 450 printchr$(17)"ergebnis-matrix"tab(25)"3"
  46. 460 printchr$(17)"programmende"tab(25)"4"
  47. 470 printchr$(17)chr$(17)chr$(17)chr$(18)"bitte auswaehlen !"
  48. 480 getc$:if c$<"1" or c$>"4" then 480
  49. 490 on val(c$) gosub 570,670,770,550
  50. 500 printchr$(17)chr$(18)"zum menue   _ druecken"
  51. 510 getc$:if c$<>"_" then 510
  52. 520 goto 420
  53. 530 rem ***** unterprogramme *****
  54. 540 rem ---- programmende ----
  55. 550 end
  56. 560 rem ---- ausgabe der 1.matrix ----
  57. 570 printchr$(17)chr$(17)chr$(18)a$
  58. 580 printchr$(17)chr$(17)
  59. 590 for i=1 to z1
  60. 600 :for j=1to s1
  61. 610 ::printtab(int((s*40-5)/s1)*(j-1))a(i,j);
  62. 620 :next j
  63. 630 :print:print
  64. 640 next i
  65. 650 return
  66. 660 rem ---- ausgabe der 2.matrix ----
  67. 670 printchr$(17)chr$(17)chr$(18)b$
  68. 680 printchr$(17)chr$(17)
  69. 690 for i=1 to z2
  70. 700 :for j=1 to s2
  71. 710 ::printtab(int((s*40-5)/s2)*(j-1))b(i,j);
  72. 720 :next j
  73. 730 :print:print
  74. 740 next i
  75. 750 return
  76. 760 rem ---- ausgabe der ergebnismatrix ----
  77. 770 printchr$(17)chr$(17);:c$=a$+"*"+b$:printchr$(18)c$
  78. 780 printchr$(17)chr$(17)
  79. 790 for i=1 to z1
  80. 800 :for j=1 to s2
  81. 810 ::printtab(int((s*40-5)/s2)*(j-1))c(i,j);
  82. 820 :next j
  83. 830 :print:print
  84. 840 next i
  85. 850 return
  86.