Program ma potegowac macierze przez rekurencje, zrobilem juz mnozenie, ale mam problem z potegowaniem. Czy ktos moze udzielic mi wskazowek? pokazaac blad? z gor dziekuje:)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 2
int pomnoz(int tab[N][N],int tab0[N][N],int tab1[N][N]);
void wyswietl(int tab[N][N]);
int main ()
{
int a,i,j,tab[N][N];
int tab1[N][N],*tab0;
randomize();
for(i=0;i<N;i++)
for(j=0;j<N;j++)
tab[i][j]=random(10);
//for(i=0;i<N;i++)
//for(j=0;j<N;j++)
//*(tab0+N*i+j)=tab[i][j];
wyswietl(tab);
printf("Podaj potege\n");
scanf("%i",&a);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
if(i==j) *(tab0+N*i+j)=1;
else *(tab0+N*i+j)=0;
}
wyswietl(tab0);
printf("\n");
for(i=1;i<a;i++)
{*tab0*=pomnoz(tab,tab0,tab1);
wyswietl(tab1);
printf("\n");}
getch();
return 0;
}
int pomnoz(int tab[][N],int tab0[][N],int tab1[][N])
{int i,j,k;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{ tab1[i][j]=0;
for(k=0;k<N;k++)
{
tab1[i][j]=tab1[i][j]+tab[i][k]*tab0[k][j];
}
}
}
return (tab1);}
void wyswietl(int tab[N][N])
{
int i,j;
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%i ",tab[i][j]);
printf("\n");
}
}