Advertisement
piffy

Matrice seriale

Aug 24th, 2014
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. /********************************************************
  2.  * matrice_seriale.c
  3.  *
  4.  * Programma di moltiplicazione seriale
  5.  * (Matrice_A  X  Matrice_B) -> Matrice_C
  6.  *
  7.  * Compilare con:
  8.  * gcc -Wall matrice_seriale.c -o matrice_seriale
  9.  * Tempo necessario: circa 8 secondi (con 1000 elementi).
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include "timer.h"
  14. #define ARRAY_SIZE 1000
  15.  
  16. typedef int matrix_t[ARRAY_SIZE][ARRAY_SIZE];
  17.  
  18. matrix_t MA,MB,MC;
  19.  
  20. /* Riempimento delle matrici */
  21. void initMatrices(int size,
  22.       matrix_t MA,
  23.       matrix_t MB)
  24. {
  25.   int row, column;
  26.   for (row = 0; row < size; row++) {
  27.     for (column = 0; column < size; column++) {
  28.       MA[row][column] = 1;
  29.     }
  30.   }
  31.   for (row = 0; row < size; row++) {
  32.     for (column = 0; column < size; column++) {
  33.       MB[row][column] = row + column + 1;
  34.     }
  35.   }
  36.   printf("Matrici pronte:\n");
  37. }
  38.  
  39. /* Funzione di aiuto che moltiplica una riga per una colonna e pone il risultato nella matrice C */
  40.  
  41. void mult(int size, int row, int column, matrix_t MA, matrix_t MB, matrix_t MC)
  42. {
  43.   int position;
  44.  
  45.   MC[row][column] = 0;
  46.   for(position = 0; position < size; position++) {
  47.     MC[row][column] = MC[row][column] +
  48.       ( MA[row][position]  *  MB[position][column] ) ;
  49.   }
  50. }
  51.  
  52. extern int main(void)
  53. {
  54.   int   size, row, column;
  55.   size = ARRAY_SIZE;
  56.  
  57.   /* Inizializza le matrici A e B. */
  58.   initMatrices(size, MA, MB);
  59.   startTime();
  60.   /*
  61.    * Calcolo del prodotto delle matrici, per riga e colonna.
  62.    * (Per dettagli http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici)  
  63.    */
  64.   for(row = 0; row < size; row++) {
  65.     for (column = 0; column < size; column++) {
  66.       mult(size, row, column, MA, MB, MC);
  67.     }
  68.   }
  69.   stopTime();
  70.   elapsedTime();
  71.   return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement