Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TTCS ver0.2
- //Khi viet chu y b nam o o thu n
- #include <stdio.h>
- #include <stdlib.h>
- /*enum
- {
- MAX = 10,
- };*/
- #define MAX = 10
- typedef struct matrix
- {
- float hang;
- float cot;
- float euclid;
- } type_chuan;
- float* getMatrix(float*, int*);
- float* enterMatrix(int);
- void printMatrix(float*, int*);
- int isCheoTroi(float* a,int* n);
- float sumOfRemain(float* a, int* n, int);
- float absolute(float x);
- int isFloat(void);
- type_chuan absMatrix(float* a,int* n);
- int main()
- {
- float* a;
- int n;
- int temp;
- a = NULL;
- type_chuan max;
- //Nhap ma tran
- {
- a = getMatrix(a,&n);
- }
- temp = isCheoTroi(a,&n);
- if(temp == 1) printf("Ma tran da nhap co tinh cheo troi\n");
- else printf("Ma tran khong co tinh cheo troi\n");
- max = absMatrix(a,&n);
- printf("Chuan hang: %f\n",max.hang);
- printf("Chuan cot: %f\n",max.cot);
- //Kiem tra tinh cheo troi
- //Tinh chuan cua ma tran A va kiem tra su hoi tu cua PP lap don va Seidel
- //Tinh nghiem gan dung voi so l*an lap k cho truoc va danh gia sai so
- //TInh nghiem gan dung voi sai so e cho truoc
- //Tinh nghiem gan dung Xk thoa man()....
- return 0;
- }
- //Nhap ma tran
- float* getMatrix(float* a, int* n)
- {
- //Nhap co ma tran
- do
- {
- printf("Nhap vao co cua ma tran: ");
- scanf("%d",n);
- //Kiem tra gia tri cua n (phai la so nguyen duong)
- if(*n < 2) printf("Gia tri nhap vao khong hop le. Nhap lai n.\n");
- else break;
- } while (1);
- //Nhap cac phan tu
- do
- {
- a = enterMatrix(*n);
- if(a == 0) printf("Nhap lai ma tran co n ");
- } while (!a);
- //In ra ma tran
- printMatrix(a,n);
- printf("Done!\n");
- //Exit
- return a;
- }
- //Nhap ma tran.
- float* enterMatrix( int n)
- {
- int i,j;
- float* a;
- a = (float*)malloc(sizeof(float)*(n)*(n+1));
- for(i = 0; i < n; i ++)
- {
- for(j = 0; j < n + 1; j ++)
- {
- if(j == n)//a[n] chua gia tri b
- printf("b%d = ",i);
- else
- printf("a[%d][%d] = ",i,j);
- scanf("%f",(a + i * (n + 1) + j));
- //#Ktra cac gia tri nhap vao co toan` la` so' ko?
- //tra ve 1 neu thanh cong, neu trai tra ve 0
- }
- }
- return a;
- }
- //Print matrix
- void printMatrix(float* a,int* n)
- {
- int i,j;
- printf("Ma tran vua nhap: \n");
- for(i = 0; i < *n; i ++)
- {
- for(j = 0; j < *n + 1; j ++)
- {
- printf("%5f ",*((a+i*(*n+1)+j)));
- }
- printf("\n");
- }
- return;
- }
- //Kiem tra tinh cheo troi
- //Tính chéo trội của một ma trận vuông: Ma trận A với các thành phần aij
- //được gọi là có tính chéo trội, nếu giá trị tuyệt đối của các phần tử nằm
- //trên đường chéo chính lớn hơn tổng các giá trị tuyệt đối của các phần còn lại nằm cùng hàng
- int isCheoTroi(float* a,int* n)
- {
- printf("Kiem tra tinh cheo troi cua ma tran vua nhap: \n");
- int i,j,t = 1;
- for(i = 0; i < *n; i ++)
- {
- if(absolute(*(a + i * (*n + 1) + i)) <= sumOfRemain(a,n,i))//Khong co tinh cheo troi
- {
- printf("|a[%d][%d]| = %f <= ",i,i,absolute(*(a + i * (*n + 1) + i)));
- for(j = 0; j < *n; j ++)
- {
- if(j != i) printf("|a[%d][%d]| ",i,j);
- if( j > 0 && j < *n - 1) printf("+ ");
- }
- printf("\n");
- t = t - 1; break;
- }
- //Co tinh cheo troi
- else
- {
- printf("|a[%d][%d]| = %f > ",i,i,absolute(*(a + i * (*n + 1) + i)));
- for(j = 0; j < *n; j ++)
- {
- if(j != i)
- {
- printf("|a[%d][%d]|",i,j);
- if(j < *n - 1)
- {
- if(i == *n - 1 && j == *n - 2) {}
- else printf(" + ");
- }
- }
- if(j == *n - 1) printf("\n");
- }
- }
- }
- return t;
- }
- float sumOfRemain(float* a, int* n, int i)
- {
- float sor = 0;
- int j;
- for(j = 0; j < *n; j ++)
- {
- sor += absolute(*(a + i * (*n + 1) +j));
- }
- sor = sor - *(a + i * (*n + 1) + i);//Tru di phan tu cua duong cheo
- return sor;
- }
- float absolute(float x)
- {
- if(x < 0) return -x;
- else return x;
- }
- //Create this function to check the input is a float. If not return 0. May be i'll use a buffer
- //use isdigit and ispunct in ctype.h
- //int isFloat(void)
- //Tinh chuan cua ma tran A va kiem tra su hoi tu cua PP lap don va Seidel
- type_chuan absMatrix(float* a,int* n)
- {
- int i,j;
- type_chuan chuan;
- float max = 0;
- float temp = 0;
- //Chuan tinh theo hang
- for(i = 0; i < *n; i++)
- {
- temp = 0;
- for(j = 0; j < *n;j++)
- {
- temp += absolute(*(a + i * (*n + 1) +j));
- }
- max = max>temp ? max : temp;
- }
- chuan.hang = max;
- //Chuan tinh theo cot
- max = 0;
- for(j = 0; j < *n; j++)
- {
- temp = 0;
- for(i = 0; i < *n; i++)
- {
- temp += absolute(*(a + i *(*n + 1) + j));
- }
- max = max>temp ? max : temp;
- }
- chuan.cot = max;
- return chuan;
- }
- //Lap don
- //
- //Seidel
- //Tinh nghiem gan dung voi so lan lap k cho truoc va danh gia sai so
- //TInh nghiem gan dung voi sai so e cho truoc
- //Tinh nghiem gan dung Xk thoa man()....
- //Max thap phan
Advertisement
Add Comment
Please, Sign In to add comment