Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************************************************
- * matrice_seriale.c
- *
- * Programma di moltiplicazione seriale
- * (Matrice_A X Matrice_B) -> Matrice_C
- *
- * Compilare con:
- * gcc -Wall matrice_seriale.c -o matrice_seriale
- * Tempo necessario: circa 8 secondi (con 1000 elementi).
- */
- #include <stdio.h>
- #include "timer.h"
- #define ARRAY_SIZE 1000
- typedef int matrix_t[ARRAY_SIZE][ARRAY_SIZE];
- matrix_t MA,MB,MC;
- /* Riempimento delle matrici */
- void initMatrices(int size,
- matrix_t MA,
- matrix_t MB)
- {
- int row, column;
- for (row = 0; row < size; row++) {
- for (column = 0; column < size; column++) {
- MA[row][column] = 1;
- }
- }
- for (row = 0; row < size; row++) {
- for (column = 0; column < size; column++) {
- MB[row][column] = row + column + 1;
- }
- }
- printf("Matrici pronte:\n");
- }
- /* Funzione di aiuto che moltiplica una riga per una colonna e pone il risultato nella matrice C */
- void mult(int size, int row, int column, matrix_t MA, matrix_t MB, matrix_t MC)
- {
- int position;
- MC[row][column] = 0;
- for(position = 0; position < size; position++) {
- MC[row][column] = MC[row][column] +
- ( MA[row][position] * MB[position][column] ) ;
- }
- }
- extern int main(void)
- {
- int size, row, column;
- size = ARRAY_SIZE;
- /* Inizializza le matrici A e B. */
- initMatrices(size, MA, MB);
- startTime();
- /*
- * Calcolo del prodotto delle matrici, per riga e colonna.
- * (Per dettagli http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici)
- */
- for(row = 0; row < size; row++) {
- for (column = 0; column < size; column++) {
- mult(size, row, column, MA, MB, MC);
- }
- }
- stopTime();
- elapsedTime();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement