#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ZEILENZAHL1 4
#define SPALTENZAHL1 3
#define ZEILENZAHL2 3
#define SPALTENZAHL2 4
#define ZEILENZAHL3 4
#define SPALTENZAHL3 4
void funktioneingabematrix1( int [ ] [ SPALTENZAHL1] , int ) ;
void funktioneingabematrix2( int [ ] [ SPALTENZAHL2] , int ) ;
void funktionberechnungergebnismatrix( int [ ] [ SPALTENZAHL3] , int [ ] [ SPALTENZAHL1] , int [ ] [ SPALTENZAHL2] ) ;
void funktionausgabeergebnismatrix( int [ ] [ SPALTENZAHL3] ) ;
int main( )
{
int matrix1[ ZEILENZAHL1] [ SPALTENZAHL1] ,
matrix2 [ ZEILENZAHL2] [ SPALTENZAHL2] ,
ergebnismatrix[ ZEILENZAHL3] [ SPALTENZAHL3] ;
funktioneingabematrix1( matrix1, ZEILENZAHL1) ;
funktioneingabematrix2( matrix2, ZEILENZAHL2) ;
funktionberechnungergebnismatrix( ergebnismatrix, matrix1, matrix2) ;
funktionausgabeergebnismatrix( ergebnismatrix) ;
return 0 ;
}
void funktioneingabematrix1( int matrix1[ ] [ SPALTENZAHL1] , int z1)
{
int zaehl1, zaehl2, counter= 0 ;
printf ( "Bitte geben Sie die erste Matrix ein\n " ) ; for ( zaehl1= 0 ; zaehl1< z1; zaehl1++ )
for ( zaehl2= 0 ; zaehl2< SPALTENZAHL1; zaehl2++ )
{
scanf ( "%i" ,& matrix1
[ zaehl1
] [ zaehl2
] ) ; counter++;
if ( counter== SPALTENZAHL1)
{
counter= 0 ;
}
}
}
void funktioneingabematrix2( int matrix2[ ] [ SPALTENZAHL2] , int z2)
{
int zaehl1, zaehl2, counter= 0 ;
printf ( "Bitte geben Sie die zweite Matrix ein\n " ) ; for ( zaehl1= 0 ; zaehl1< z2; zaehl1++ )
for ( zaehl2= 0 ; zaehl2< SPALTENZAHL2; zaehl2++ )
{
scanf ( "%i" ,& matrix2
[ zaehl1
] [ zaehl2
] ) ; counter++;
if ( counter== SPALTENZAHL2)
{
counter= 0 ;
}
}
counter= 0 ;
}
void funktionberechnungergebnismatrix( int e[ ] [ SPALTENZAHL3] , int m1[ ] [ SPALTENZAHL1] , int m2[ ] [ SPALTENZAHL2] )
{
int zaehl1, zaehl2, x= 0 ;
for ( zaehl1= 0 ; zaehl1< ZEILENZAHL3; zaehl1++ )
for ( zaehl2= 0 ; zaehl2< SPALTENZAHL3; zaehl2++ )
for ( e[ zaehl1] [ zaehl2] = x= 0 ; x< SPALTENZAHL1;++ x)
e[ zaehl1] [ zaehl2] += m1[ zaehl1] [ x] * m2[ x] [ zaehl2] ;
}
void funktionausgabeergebnismatrix( int ergebnismatrix[ ] [ SPALTENZAHL3] )
{
int zaehl1, zaehl2, counter= 0 ;
printf ( "Die resultierende Matrix aus Matrix1 * Matrix 2 lautet: \n " ) ; for ( zaehl1= 0 ; zaehl1< ZEILENZAHL3; zaehl1++ )
for ( zaehl2= 0 ; zaehl2< SPALTENZAHL3; zaehl2++ )
{
printf ( "%i " , ergebnismatrix
[ zaehl1
] [ zaehl2
] ) ; counter++;
if ( counter== SPALTENZAHL3)
{
counter= 0 ; }
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KIAojZGVmaW5lIFpFSUxFTlpBSEwxIDQKI2RlZmluZSBTUEFMVEVOWkFITDEgMwojZGVmaW5lIFpFSUxFTlpBSEwyIDMKI2RlZmluZSBTUEFMVEVOWkFITDIgNAojZGVmaW5lIFpFSUxFTlpBSEwzIDQKI2RlZmluZSBTUEFMVEVOWkFITDMgNAogCnZvaWQgZnVua3Rpb25laW5nYWJlbWF0cml4MShpbnRbXVtTUEFMVEVOWkFITDFdLGludCk7CnZvaWQgZnVua3Rpb25laW5nYWJlbWF0cml4MihpbnRbXVtTUEFMVEVOWkFITDJdLGludCk7CnZvaWQgZnVua3Rpb25iZXJlY2hudW5nZXJnZWJuaXNtYXRyaXgoaW50W11bU1BBTFRFTlpBSEwzXSxpbnRbXVtTUEFMVEVOWkFITDFdLGludFtdW1NQQUxURU5aQUhMMl0pOwp2b2lkIGZ1bmt0aW9uYXVzZ2FiZWVyZ2VibmlzbWF0cml4KGludFtdW1NQQUxURU5aQUhMM10pOwoKaW50IG1haW4oKQp7CiAgaW50IG1hdHJpeDFbWkVJTEVOWkFITDFdW1NQQUxURU5aQUhMMV0sCiAgCQltYXRyaXgyIFtaRUlMRU5aQUhMMl1bU1BBTFRFTlpBSEwyXSwKICAJCWVyZ2VibmlzbWF0cml4W1pFSUxFTlpBSEwzXVtTUEFMVEVOWkFITDNdOwoKICBmdW5rdGlvbmVpbmdhYmVtYXRyaXgxKG1hdHJpeDEsWkVJTEVOWkFITDEpOwoKICBmdW5rdGlvbmVpbmdhYmVtYXRyaXgyKG1hdHJpeDIsWkVJTEVOWkFITDIpOwoKICBmdW5rdGlvbmJlcmVjaG51bmdlcmdlYm5pc21hdHJpeChlcmdlYm5pc21hdHJpeCwgbWF0cml4MSwgbWF0cml4Mik7CgogIGZ1bmt0aW9uYXVzZ2FiZWVyZ2VibmlzbWF0cml4KGVyZ2VibmlzbWF0cml4KTsKCiAgcmV0dXJuIDA7Cn0KIAoKdm9pZCBmdW5rdGlvbmVpbmdhYmVtYXRyaXgxKGludCBtYXRyaXgxW11bU1BBTFRFTlpBSEwxXSxpbnQgejEpCnsKICBpbnQgemFlaGwxLHphZWhsMiwgY291bnRlcj0wOwogIHByaW50ZigiQml0dGUgZ2ViZW4gU2llIGRpZSBlcnN0ZSBNYXRyaXggZWluXG4iKTsKICBmb3IoemFlaGwxPTA7emFlaGwxPHoxO3phZWhsMSsrKQogICAgICBmb3IoemFlaGwyPTA7emFlaGwyPFNQQUxURU5aQUhMMTt6YWVobDIrKykKICAgICAgICAgewogICAgICAgICAgIHNjYW5mKCIlaSIsJm1hdHJpeDFbemFlaGwxXVt6YWVobDJdKTsKICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgaWYoY291bnRlcj09U1BBTFRFTlpBSEwxKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgICAgICAgICAgICBjb3VudGVyPTA7CiAgICAgICAgICAgICAgfQogICAgICAgICB9CiAKfQogCnZvaWQgZnVua3Rpb25laW5nYWJlbWF0cml4MihpbnQgbWF0cml4MltdW1NQQUxURU5aQUhMMl0saW50IHoyKQp7CiBpbnQgemFlaGwxLHphZWhsMiwgY291bnRlcj0wOwogcHJpbnRmKCJCaXR0ZSBnZWJlbiBTaWUgZGllIHp3ZWl0ZSBNYXRyaXggZWluXG4iKTsKICBmb3IoemFlaGwxPTA7emFlaGwxPHoyO3phZWhsMSsrKQogICAgICBmb3IoemFlaGwyPTA7emFlaGwyPFNQQUxURU5aQUhMMjt6YWVobDIrKykKICAgICAgewogICAgICAgICAgc2NhbmYoIiVpIiwmbWF0cml4Mlt6YWVobDFdW3phZWhsMl0pOwogICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgaWYoY291bnRlcj09U1BBTFRFTlpBSEwyKQogICAgICAgICAgewogICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICAgICAgICBjb3VudGVyPTA7CiAgICAgICAgICB9CiAgICAgIH0KICAgY291bnRlcj0wOwp9CiAKdm9pZCBmdW5rdGlvbmJlcmVjaG51bmdlcmdlYm5pc21hdHJpeChpbnQgZVtdW1NQQUxURU5aQUhMM10saW50IG0xW11bU1BBTFRFTlpBSEwxXSxpbnQgbTJbXVtTUEFMVEVOWkFITDJdKQp7CiAgICBpbnQgemFlaGwxLHphZWhsMix4PTA7CiAgICBmb3IoemFlaGwxPTA7emFlaGwxPFpFSUxFTlpBSEwzO3phZWhsMSsrKQogICAgICBmb3IoemFlaGwyPTA7emFlaGwyPFNQQUxURU5aQUhMMzt6YWVobDIrKykKICAgICAgICAgZm9yKGVbemFlaGwxXVt6YWVobDJdPXg9MDt4PFNQQUxURU5aQUhMMTsrK3gpCiAgICAgICAgICAgIGVbemFlaGwxXVt6YWVobDJdKz1tMVt6YWVobDFdW3hdKm0yW3hdW3phZWhsMl07Cn0KIAp2b2lkIGZ1bmt0aW9uYXVzZ2FiZWVyZ2VibmlzbWF0cml4KGludCBlcmdlYm5pc21hdHJpeFtdW1NQQUxURU5aQUhMM10pCnsKICAgIGludCB6YWVobDEsemFlaGwyLCBjb3VudGVyPTA7CiAgICBwcmludGYoIkRpZSByZXN1bHRpZXJlbmRlIE1hdHJpeCBhdXMgTWF0cml4MSAqIE1hdHJpeCAyIGxhdXRldDogXG4iKTsKICAgIGZvcih6YWVobDE9MDt6YWVobDE8WkVJTEVOWkFITDM7emFlaGwxKyspCiAgICAgIGZvcih6YWVobDI9MDt6YWVobDI8U1BBTFRFTlpBSEwzO3phZWhsMisrKQogICAgICAgICAgewogICAgICAgICAgICAgIHByaW50ZigiJWkgIiwgZXJnZWJuaXNtYXRyaXhbemFlaGwxXVt6YWVobDJdKTsKICAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICAgaWYoY291bnRlcj09U1BBTFRFTlpBSEwzKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgICAgICAgICAgICBjb3VudGVyPTA7fQogICAgICAgICAgfQogICAgICAgICAgIAp9Cg==