Witam. Miałem do napisania program który mnoży, dodaje i odejmuje macierze 2x2. Jednak po wykonanych obliczeniach i podaniu wyniku program przestaje działać. Pojawia się błąd i przerywa proces. Czy ktoś może wie w czym tkwi błąd?
#include <stdio.h>
void mnozenie(int macierz[2][2], int macierz2[2][2]);
void dodawanie(int macierz[2][2], int macierz2[2][2]);
void odejmowanie(int macierz[2][2], int macierz2[2][2]);
void wypisz(int tab[2][2]);
main()
{
int macierz[2][2];
int macierz2[2][2];
printf("Podaj elementy pierwszej macierzy A\n");
printf("A[1.1]= ");
scanf("%d", &macierz[1][1]);
printf("A[1.2]= ");
scanf("%d", &macierz[1][2]);
printf("A[2.1]= ");
scanf("%d", &macierz[2][1]);
printf("A[2.2]= ");
scanf("%d", &macierz[2][2]);
printf("Podaj elementy drugiej macierzy B\n");
printf("B[1.1]= ");
scanf("%d", &macierz2[1][1]);
printf("B[1.2]= ");
scanf("%d", &macierz2[1][2]);
printf("B[2.1]= ");
scanf("%d", &macierz2[2][1]);
printf("B[2.2]= ");
scanf("%d", &macierz2[2][2]);
mnozenie(macierz,macierz2);
dodawanie(macierz,macierz2);
odejmowanie(macierz,macierz2);
}
void mnozenie(int macierz[2][2], int macierz2[2][2])
{
int wynik1[2][2];
wynik1[1][1]=((macierz[1][1]*macierz2[1][1])+(macierz[1][2]*macierz2[2][1]));
wynik1[1][2]=((macierz[1][1]*macierz2[1][2])+(macierz[1][2]*macierz2[2][2]));
wynik1[2][1]=((macierz[2][1]*macierz2[1][1])+(macierz[2][2]*macierz2[2][1]));
wynik1[2][2]=((macierz[2][1]*macierz2[1][2])+(macierz[2][2]*macierz2[2][2]));
wypisz(wynik1);
}
void dodawanie(int macierz[2][2], int macierz2[2][2])
{
int wynik2[2][2];
wynik2[1][1]=(macierz[1][1])+(macierz2[1][1]);
wynik2[1][2]=(macierz[1][2])+(macierz2[1][2]);
wynik2[2][1]=(macierz[2][1])+(macierz2[2][1]);
wynik2[2][2]=(macierz[2][2])+(macierz2[2][2]);
wypisz(wynik2);
}
void odejmowanie(int macierz[2][2], int macierz2[2][2])
{
int wynik3[2][2];
wynik3[1][1]=(macierz[1][1])-(macierz2[1][1]);
wynik3[1][2]=(macierz[1][2])-(macierz2[1][2]);
wynik3[2][1]=(macierz[2][1])-(macierz2[2][1]);
wynik3[2][2]=(macierz[2][2])-(macierz2[2][2]);
wypisz(wynik3);
}
void wypisz(int tab[2][2])
{
printf("\n%d %d \n%d %d\n",tab[1][1],tab[1][2],tab[2][1],tab[2][2]);
}