Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- int main(void){
- srand(time(NULL));
- int i,j,k;
- int SIZE = 500;
- int **m1;
- int **m2;
- int **m3;
- int t = 7;
- int cnt = 0;
- for(SIZE = 500, cnt = 0; cnt < 5; cnt++, SIZE += 250){
- t = 7;
- double mediaNorm = 0, mediaTransp = 0;
- double tnorm[8], ttransp[8];
- pritnf("_________________________________");
- printf("\nTamanho = %d\n", SIZE);
- while(t--){
- m1 = (int**) malloc(SIZE * sizeof(int*));
- m2 = (int**) malloc(SIZE * sizeof(int*));
- m3 = (int**) malloc(SIZE * sizeof(int*));
- for(i=0;i<SIZE;i++){
- m1[i] = (int*) malloc(SIZE * sizeof(int));
- m2[i] = (int*) malloc(SIZE * sizeof(int));
- m3[i] = (int*) malloc(SIZE * sizeof(int));
- }
- for(i=0;i<SIZE;i++){
- for(j=0;j<SIZE;j++){
- m1[i][j] = (int)rand()%50;
- m2[i][j] = (int)rand()%50;
- m3[i][j] = (int)rand()%50;
- }
- }
- for(i=0;i<SIZE;i++){
- for(j=0;j<SIZE;j++){
- m3[i][j] = 0;
- }
- }
- /*
- for(i=0;i<SIZE;i++){
- for(j=0;j<SIZE;j++){
- printf("%d ", m2[i][j]);
- }
- printf("\n");
- }
- */
- clock_t start1, start2, end1, end2;
- start1 = clock();
- for(i=0;i<SIZE;i++){
- for(j=0;j<SIZE;j++){
- for(k=0;k<SIZE;k++){
- m3[i][j] += m1[i][k] * m2[k][j];
- }
- }
- }
- end1 = clock();
- int aux;
- start2 = clock();
- for(i=0;i<SIZE;i++){ //transposição
- for(j=i;j<SIZE;j++){
- aux = m2[i][j];
- m2[i][j] = m2[j][i];
- m2[j][i] = aux;
- }
- }
- for(i=0;i<SIZE;i++)
- for(j=0;j<SIZE;j++){
- m3[i][j] = 0;
- for(k=0;k<SIZE;k++){
- m3[i][j] += m1[i][k] * m2[j][k];
- }
- }
- end2 = clock();
- tnorm[6-t] = (double)(end1 - start1)/CLOCKS_PER_SEC;
- mediaNorm += tnorm[6-t];
- ttransp[6-t] = (double)(end2 - start2)/CLOCKS_PER_SEC;
- mediaTransp += ttransp[6-t];
- printf("Caso %d:\n", 7 - t);
- printf("Tempo normal: %lf segundos. |", tnorm[6-t]);
- printf(" Tempo transposto: %lf segundos.\n", ttransp[6-t]);
- for(i=0;i<SIZE;i++){
- free(m1[i]);
- free(m2[i]);
- free(m3[i]);
- }
- free(m1);
- free(m2);
- free(m3);
- }
- mediaNorm = mediaNorm / 7.0;
- mediaTransp = mediaTransp / 7.0;
- printf("\nMédias:\n");
- printf("Media normal: %lf | Media transposto: %lf\n", mediaNorm, mediaTransp);
- //calculo desvio padrao normal
- double sum = 0, variancia, desvio;
- for(i=0;i<7;i++){
- sum += (tnorm[i]-mediaNorm)*(tnorm[i]-mediaNorm);
- }
- variancia=sum/7.0;
- desvio=sqrt(variancia);
- printf("Desvio padrao:\n");
- printf("Desvio normal: %lf |", desvio);
- sum = 0;
- for(i=0;i<7;i++){
- sum += (ttransp[i]-mediaNorm)*(ttransp [i]-mediaNorm);
- }
- variancia=sum/7.0;
- desvio=sqrt(variancia);
- printf(" Desvio transposto: %lf\n", desvio);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement