Advertisement
FamiHug

GTSExp67

Jun 5th, 2011
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.95 KB | None | 0 0
  1. /*
  2.  * =====================================================================================
  3.  *
  4.  *       Filename:  example1.c
  5.  *
  6.  *    Description:  
  7.  *
  8.  *        Version:  1.0
  9.  *        Created:  06/05/2011 03:09:36 PM
  10.  *       Revision:  none
  11.  *       Compiler:  gcc
  12.  *
  13.  *         Author:  FamiHug (fh), famihug@gmail.com
  14.  *        Company:  familug.blogspot.com
  15.  *
  16.  * =====================================================================================
  17.  */
  18.  
  19. //Giai vi du trang 67 GTS
  20. //
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. #include <math.h>
  24.  
  25.  
  26. //Nhap ma tran
  27.  
  28. void NhapMaTran(float **matrix)
  29. {
  30.     int size = 3;
  31.     int i,j;
  32.  
  33.     *matrix =  (float *)malloc(size * (size + 1) * sizeof(float));
  34.  
  35.     printf("Nhap vao ma tran: \n");
  36.     for(i = 0; i < 3; i++)
  37.     {
  38.         for(j = 0; j < 4; j++)
  39.         {
  40.             scanf("%f",*matrix + i * (size + 1)  + j);
  41.         }
  42.     }
  43.     printf("Nhap xong!\n");
  44.     return;
  45. }
  46.  
  47. void InRaMatran(float **matrix)
  48. {
  49.     int size = 3;
  50.     int i,j;
  51.  
  52.     printf("Ma Tran: \n");
  53.     for(i = 0; i < size; i++)
  54.     {
  55.         for(j = 0; j < size + 1; j++)
  56.         {
  57.             printf("%3.3f ",*(*matrix + i * (size + 1) + j));
  58.         }
  59.         printf("\n");
  60.     }
  61.     return;
  62. }
  63.  
  64. //Viet lai theo dang alphaX
  65. float *TraVeAlpha(float **matrix)
  66. {
  67.     int i,j;
  68.     float *alpha;
  69.     int size = 3;
  70.     alpha = NULL;
  71.  
  72.     alpha = *matrix;
  73.     for(i = 0; i < size; i++)
  74.     {
  75.         for(j = 0; j < size; j++)
  76.         {
  77.             if(i != j) *(alpha + i * (size + 1) + j) = -(*(alpha + i * (size + 1) + j))/(*(alpha + i * (size + 1) + i));
  78.         }
  79.     }
  80.     for(i = 0; i < 3; i++)
  81.     {
  82.         (*(alpha + i * (size + 1) + size)) /= (*(alpha + i * (size + 1) + i));
  83.         *(alpha + i * (size + 1) + i) = 0;
  84.     }
  85.     return alpha;
  86. }
  87.    
  88.  
  89. //Kiem tra tinh lap don
  90.  
  91. float absolute(float x)
  92. {
  93.     if(x >= 0) return x;
  94.     else return -x;
  95. }
  96.  
  97. int isLapDon(float **alpha)
  98. {
  99.     int i,j;
  100.     int size = 3;
  101.     float max = 0;
  102.     float tempSum = 0;
  103.     for(i = 0; i < 3; i++)
  104.     {
  105.         tempSum = 0;
  106.         for(j = 0; j < 3; j++)
  107.         {
  108.             tempSum += absolute(*(*alpha + i * (size + 1) + j));
  109.         }
  110.         if(max < tempSum) max = tempSum;
  111.     }
  112.     printf("Max: %f\n",max);
  113.     if(max < 1) return 1;
  114.     else return 0;
  115. }
  116.  
  117.    
  118. //Chon xap xi dau, so lan lap k
  119. //Thuc hien lap va dua ra ket qua
  120.  
  121. int main(int argc, char **argv)
  122. {
  123.     float *matrix;
  124.     float *alpha;
  125.     matrix = NULL;
  126.     NhapMaTran(&matrix);
  127.     InRaMatran(&matrix);
  128.     alpha = TraVeAlpha(&matrix);
  129.     InRaMatran(&alpha);
  130.     printf("Co tinh lap don: %d\n",isLapDon(&alpha));
  131.  
  132.     //Nhap vao xap xi dau
  133.     int k = 4; //k la so lan lap
  134.     int i,g;
  135.     int size = 3;
  136.  
  137.     float R[3][10];
  138.     R[0][0] = 0, R[1][0] = 0, R[2][0] = 0;
  139.  
  140.     for(g = 1; g < k + 1; g++)
  141.     {
  142.         for(i = 0; i < 3; i++)
  143.         {
  144.             R[i][g] = R[0][g - 1] * (*(alpha + i * (size + 1) + 0)) + R[1][g - 1] * (*(alpha + i * (size + 1) + 1)) + R[2][g - 1]  * (*(alpha + i * (size + 1) + 2)) + *(alpha + i * (size + 1) + size);
  145.         }
  146.     }
  147.  
  148.     printf("Ket Qua: \n");
  149.  
  150.     for(i = 0; i < 3; i++)
  151.     {
  152.         for(g = 0; g < k + 1; g++)
  153.         {
  154.             printf("%f ",R[i][g]);
  155.         }
  156.         printf("\n");
  157.     }
  158.  
  159.     return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement