Advertisement
Es7evam

exlab

Oct 23rd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6. int main(void){
  7.     srand(time(NULL));
  8.     int i,j,k;
  9.     int SIZE = 500;
  10.     int **m1;
  11.     int **m2;
  12.     int **m3;
  13.     int t = 7;
  14.     int cnt = 0;
  15.     for(SIZE = 500, cnt = 0; cnt < 5; cnt++, SIZE += 250){
  16.         t = 7;
  17.         double mediaNorm = 0, mediaTransp = 0;
  18.         double tnorm[8], ttransp[8];
  19.         pritnf("_________________________________");
  20.         printf("\nTamanho = %d\n", SIZE);
  21.         while(t--){
  22.             m1 = (int**) malloc(SIZE * sizeof(int*));
  23.             m2 = (int**) malloc(SIZE * sizeof(int*));
  24.             m3 = (int**) malloc(SIZE * sizeof(int*));
  25.            
  26.             for(i=0;i<SIZE;i++){
  27.                 m1[i] = (int*) malloc(SIZE * sizeof(int));
  28.                 m2[i] = (int*) malloc(SIZE * sizeof(int));
  29.                 m3[i] = (int*) malloc(SIZE * sizeof(int));
  30.             }
  31.            
  32.            
  33.             for(i=0;i<SIZE;i++){
  34.                 for(j=0;j<SIZE;j++){
  35.                     m1[i][j] = (int)rand()%50;
  36.                     m2[i][j] = (int)rand()%50;
  37.                     m3[i][j] = (int)rand()%50;
  38.                 }  
  39.             }
  40.        
  41.            
  42.             for(i=0;i<SIZE;i++){
  43.                 for(j=0;j<SIZE;j++){
  44.                     m3[i][j] = 0;
  45.                 }  
  46.             }
  47.            
  48.             /*
  49.             for(i=0;i<SIZE;i++){
  50.                 for(j=0;j<SIZE;j++){
  51.                     printf("%d ", m2[i][j]);
  52.                 }  
  53.                 printf("\n");
  54.             }
  55.             */
  56.            
  57.             clock_t start1, start2, end1, end2;
  58.              
  59.            
  60.             start1 = clock();
  61.            
  62.             for(i=0;i<SIZE;i++){
  63.                 for(j=0;j<SIZE;j++){
  64.                     for(k=0;k<SIZE;k++){
  65.                         m3[i][j] += m1[i][k] * m2[k][j];
  66.                     }
  67.                 }
  68.             }
  69.            
  70.             end1 = clock();
  71.            
  72.             int aux;
  73.            
  74.             start2 = clock();
  75.            
  76.             for(i=0;i<SIZE;i++){ //transposição
  77.                 for(j=i;j<SIZE;j++){
  78.                     aux = m2[i][j];
  79.                     m2[i][j] = m2[j][i];  
  80.                     m2[j][i] = aux;
  81.                 }
  82.             }
  83.            
  84.             for(i=0;i<SIZE;i++)
  85.                 for(j=0;j<SIZE;j++){
  86.                     m3[i][j] = 0;    
  87.                     for(k=0;k<SIZE;k++){
  88.                         m3[i][j] += m1[i][k] * m2[j][k];
  89.                     }
  90.                 }
  91.            
  92.             end2 = clock();
  93.             tnorm[6-t] = (double)(end1 - start1)/CLOCKS_PER_SEC;
  94.             mediaNorm += tnorm[6-t];
  95.  
  96.             ttransp[6-t] = (double)(end2 - start2)/CLOCKS_PER_SEC;
  97.             mediaTransp += ttransp[6-t];
  98.  
  99.             printf("Caso %d:\n", 7 - t);
  100.             printf("Tempo normal: %lf segundos.  |", tnorm[6-t]);
  101.             printf("  Tempo transposto: %lf segundos.\n", ttransp[6-t]);
  102.            
  103.             for(i=0;i<SIZE;i++){
  104.                 free(m1[i]);
  105.                 free(m2[i]);
  106.                 free(m3[i]);
  107.             }
  108.            
  109.             free(m1);
  110.             free(m2);
  111.             free(m3);
  112.         }
  113.  
  114.         mediaNorm = mediaNorm / 7.0;
  115.         mediaTransp = mediaTransp / 7.0;
  116.         printf("\nMédias:\n");
  117.         printf("Media normal: %lf  |  Media transposto: %lf\n", mediaNorm, mediaTransp);
  118.  
  119.         //calculo desvio padrao normal
  120.         double sum = 0, variancia, desvio;
  121.         for(i=0;i<7;i++){
  122.             sum += (tnorm[i]-mediaNorm)*(tnorm[i]-mediaNorm);
  123.         }
  124.         variancia=sum/7.0;
  125.         desvio=sqrt(variancia);
  126.         printf("Desvio padrao:\n");
  127.         printf("Desvio normal: %lf  |", desvio);
  128.  
  129.         sum = 0;
  130.         for(i=0;i<7;i++){
  131.             sum += (ttransp[i]-mediaNorm)*(ttransp [i]-mediaNorm);
  132.         }
  133.         variancia=sum/7.0;
  134.         desvio=sqrt(variancia);
  135.         printf("  Desvio transposto: %lf\n", desvio);
  136.     }
  137.     return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement