]> hackdaworld.org Git - my-code/beginners.git/commitdiff
added matrix_mult.c file - matrix multiplication without fields and with use of amllo...
authorhackbard <hackbard>
Wed, 10 Apr 2002 00:35:59 +0000 (00:35 +0000)
committerhackbard <hackbard>
Wed, 10 Apr 2002 00:35:59 +0000 (00:35 +0000)
matrix_mult.c [new file with mode: 0644]

diff --git a/matrix_mult.c b/matrix_mult.c
new file mode 100644 (file)
index 0000000..0c5b1ab
--- /dev/null
@@ -0,0 +1,83 @@
+#include <stdio.h>
+
+int *pelemente, *pmatrix1, *pmatrix2;
+
+void read_matrix ( int *pzeilen, int *pspalten ) {
+       
+       /* abfragen der anzahl der zeilen und spalten. eintrag auf pointer. */
+       int i,j,temp,zeilen,spalten;
+       printf("Anzahl der Zeilen eingeben: ");
+       scanf("%d",&zeilen);
+       *pzeilen=zeilen; 
+       printf("Anzahl der Spalten eingeben: ");
+       scanf("%d",&spalten);
+       *pspalten=spalten;
+       
+       /* memory allocation */
+       pelemente=(int *)malloc(zeilen*spalten * sizeof(int));
+
+       /* abfragen der elemente */
+       for (i=0;i<zeilen;++i) {
+               for (j=0;j<spalten;++j) {
+                       printf("Element: %d. Spalte und %d. Zeile: ",j+1,i+1);
+                       scanf("%d",&temp);
+                       /* speichern der elemente */
+                       *(pelemente + i*spalten + j)=temp;
+               }
+       }
+
+       return;
+}
+
+void write_matrix ( int zeilen, int spalten ) {
+
+       /* matrix ausgeben */
+       int i,j,temp;
+       for (i=0;i<zeilen;++i) {
+               for (j=0;j<spalten;++j) {
+                       temp=*(pelemente + i*spalten + j);
+                       printf("%03d\t",temp);
+               }
+       printf("\n");
+       }
+       return;
+}
+
+int main() {
+
+int z1,z2;
+int s1,s2;
+int i,j,k,ergebnis;
+
+read_matrix(&z1,&s1);
+
+pmatrix1=(int *)malloc(z1*s1 * sizeof(int));
+*pmatrix1=*pelemente;
+
+free( *pelemente );
+
+read_matrix(&z2,&s2);
+
+pmatrix2=(int *)malloc(z2*s2 * sizeof(int));         
+*pmatrix2=*pelemente;
+
+free( *pelemente );
+
+
+if ( s1!=z2 ) {
+       printf("Nicht definiert!\n");
+       return;
+}
+
+for (i=0;i<z1;i++) {
+       for (j=0;j<s2;j++) {
+               for (k=0;k<s1;++k) ergebnis+=(*(pmatrix1 + i*s1 + k) * *(pmatrix2 + k*s2 + j));
+               *(pelemente + i*s2 + j)=ergebnis;
+       }
+}
+       
+
+write_matrix(z1,s2);
+
+return;
+}