Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define lim 21
- void clear(){
- char ch='q';
- while (ch!=' '){
- ch = getchar();
- if (ch=='\n') break;
- }
- }
- void printfMatr(double **matr,int n){
- for(int i=0;i<n;i++){
- printf("\n");
- for (int j=0;j<n;j++){
- printf("%8.2lf \t",matr[i][j]);
- }
- }
- printf("\n");
- }
- int main(){
- printf("Введите размер квадратного массива:\n ");
- int i,n,j,k;
- double **A,**B,**C,test,tmp,m,q;
- test = scanf("%d", &n);
- if ( n >=lim || n<1) test = 0;
- while (test != 1) {
- clear();
- printf("Введите размер квадратного массива :\n");
- test = scanf("%d", &n);
- if ( n >= lim || n<1) test = 0;
- }
- clear();
- A =(double**)malloc(sizeof (double*)*n);
- for( i=0;i<n;i++){
- A[i]=(double*)malloc(sizeof(double)*n);
- }
- B =(double**)malloc(sizeof(double*)*n);
- for( i=0;i<n;i++){
- B[i]=(double*)malloc(sizeof(double)*n);
- }
- C =(double**)malloc(sizeof(double*)*n);
- for( i=0;i<n;i++){
- C[i]=(double*)malloc(sizeof(double)*n);
- }
- printf("Введите элементы матрицы\n");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- test = scanf("%lf", &A[i][j]);
- while (test != 1) {
- clear();
- test = scanf("%lf", &A[i][j]);
- }
- clear();
- }
- }
- printf("Вывод элементов матрицы\n");
- printfMatr(A,n);
- for(int i=0;i<n;i++){
- for (int j=0;j<n;j++){
- B[i][j]=A[i][j];
- }
- }
- for (int i=0; i<n; i++)
- for (int j=0; j < n/2; j++)
- {
- float tmp = B[i][j];
- B[i][j] = B[i][n-j-1];
- B[i][n-j-1] = tmp;
- }
- 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] += A[i][k] * B[k][j];
- }
- }
- }
- printf("Вывод элементов матриц B и C:\n");
- printfMatr(B,n);
- printfMatr(C,n);
- for( i=0;i<n;i++){
- free(A[i]);
- free(A);
- }
- for( i=0;i<n;i++){
- free(B[i]);
- free(B);
- }
- for( i=0;i<n;i++){
- free(C[i]);
- free(C);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement