
/*
Zeynep BOZKIR Bilişim Sistemleri 2. sinif 050702038

programi çalistirabilmek icin m ve n matris dosyalarina ihtiyaç var
dosyalarda oncelikle matrislerin boyutu sonra da matrisler yer almalidir

ör:
 2 3
 2 3 4
 3 4 5

 gibi..
 */


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
FILE *M;
FILE *N;
FILE *SONUC;

int main()
{
  int x[2],y[2],d[2];
  int k,i,j;
  int m[10][10],n[10][10],sonuc[10][10];

  // Dosyalari Ac


     M=fopen("M.txt","r");


      if(M==NULL)
      {
      puts("M dosyasi acilmadi");
      exit(1);
      }

    N=fopen("N.txt","r");


      if(N==NULL)
      {
      puts("N dosyasi acilmadi");
      exit(1);
      }

    SONUC=fopen("SONUC.txt","w+");


      if(SONUC==NULL)
      {
      puts("SONUC dosyasinda hata");
      exit(1);
      }

              //matris boyutlarini dosyadan oku
	     i=0;
	     do
	     {
	     fscanf(M, "%d",&x[i]);
	     i++;
	     }while(i!=2);
             i=0;
	     do
	     {
	     fscanf(N, "%d",&y[i]);
	     i++;
	     }while(i!=2);



  //Ekranda Goster

  puts("M matrisi satir sutun degerleri");
  i=0;
  do
  {
  printf("%d\t",x[i]);
  i++;
  }while(i!=2);

  puts("\n");

  puts("N matrisi satir sutun degerleri");
  i=0;
  do
  {
  printf("%d\t",y[i]);
  i++;
  }while(i!=2);
  puts("\n");


        //kontrol
        if(x[1]!=y[0])
        {
        puts("matrisler carpilamaz!");
        exit(1);
        }

        if(x[1]>10||x[0]>10)
        {
        puts("M matrisi buyuk");
        exit(1);
        }

        if(y[0]>10||y[1]>10)
        {
	puts("N matrisi buyuk");
        exit(1);
        }


  // matrisleri dosyadan oku

  puts("M matrisi:");
  for(i=0;i<x[0];i++)
  {
  for(j=0;j<x[1];j++)
  {fscanf(M,"%d",&m[i][j]);
  printf("%d\t",m[i][j]);}
  printf("\n");
  }

  puts("N matrisi:");
  for(i=0;i<y[0];i++)
  {
  for(j=0;j<y[1];j++)
  {fscanf(N,"%d",&n[i][j]);
  printf("%d\t",n[i][j]);}
  printf("\n");
  }


         // matris carpimi
        for(i=0;i<x[0];i++)
	{
	for(j=0;j<y[1];j++)
            {sonuc[i][j]=0;
	for(k=0;k<y[0];k++)
            {sonuc[i][j]+=m[i][k]*n[k][j];
         }}}


  //sonuc matrisi dosyaya ve ekrana yazar


  puts("Sonuc matrisi:");
  for(i=0;i<x[0];i++)
  {

    for(j=0;j<y[1];j++)
    {
      fprintf(SONUC, "%d\t ",sonuc[i][j]);
      printf("%d\t",sonuc[i][j]);
    }

  fprintf(SONUC,"\n");
  puts("\n");
  }

  //dosyalari kapat

  fclose(M);
  fclose(N);
  fclose(SONUC);

  getch();
  return 0;
}

