home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 86xx / 8605.d64 / matrimult (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  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.