Sunday, March 6, 2016

22) Ridicarea unei matrice la o putere data


#include <stdio.h>
#include <stdlib.h>

void citireMatrice(int a[20][20], int *n) {
    int i,j;
    printf("Numarul de linii & coloane: "); scanf("%d", &(*n));
    for(i=0;i<*n;i++) {
        for(j=0;j<*n;j++) {
            printf("a[%d][%d] = ", i,j);
            scanf("%d", &a[i][j]);
        }
    }

}

void afisareMatrice(int a[20][20], int n) {
    int i,j;
    for(i=0;i<n;i++) {
        for(j=0;j<n;j++) {
            printf(" %d ", a[i][j]);
        }
        puts(" ");
    }

}

void putereMatrice(int a[20][20], int n, int p) {
    //   <!--- generarea matricei unitate--->
    int i,j,q,k,c[20][20];
    int b[20][20];
    for(i=0;i<n;i++) {
        for(j=0;j<n;j++) {
            b[i][j]=(i==j);
        }
    } // <!--- generarea matricei unitate--->

    puts("Afisarea matricei unitate...");
    for(i=0;i<n;i++) {
        for(j=0;j<n;j++) {
            printf(" %d ",b[i][j]);
        }
        puts(" ");
    }


    for(q=0;q<p;q++) {
        for(i=0;i<n;i++)
            for(j=0;j<n;j++) {
                c[i][j]=0;
                for(k=0;k<n;k++)
                    c[i][j] = c[i][j]+b[i][k]*a[k][j];
            }
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                b[i][j]=c[i][j];
    }

    printf("Afisarea matricea ridicata la puterea %d \n", p);
    for(i=0;i<n;i++) {
        for(j=0;j<n;j++) {
            printf(" %d ",b[i][j]);
        }
        puts(" ");
    }

}


void main(){
    int a[20][20];
    int i,j,n,p;
    citireMatrice(a,&n);
    afisareMatrice(a,n);
    printf("Puterea este: "); scanf("%d", &p);
    putereMatrice(a,n,p);
}






No comments:

Post a Comment