Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.cpp
- * Author: mustaine
- *
- * Created on 10 novembre 2010, 16:25
- */
- #include <cstdlib>
- #include <list>
- #include <iostream>
- #include <pthread.h>
- using namespace std;
- list< list<int> > matrix1;
- list< list<int> > matrix2;
- list< list<int> > resultado;
- int m,n;
- void *MultFila(void *Union)
- {
- list < list<int> > ::iterator masteri;
- list < list<int> >::iterator slavei;
- list < list<int> >::iterator multiplee;
- list <int> multiplier;
- int cont=1;
- for(masteri=matrix1.begin();cont<(int)Union;++masteri,cont++);
- multiplier = (*masteri);
- list<int>::iterator prueba;
- list<int>::iterator fila;
- list<int> filresultado;
- for(int i =0;i<n;i++)
- {
- int suma = 0;
- multiplee = matrix2.begin();
- for(prueba=multiplier.begin();prueba!=multiplier.end();++prueba,++multiplee)
- {
- list<int> ::iterator num;
- int contint = 0;
- for(num=(*multiplee).begin();contint<i&&num!=(*multiplee).end();++num,contint++);
- suma +=(*prueba)*(*num);
- }
- filresultado.push_back(suma);
- }
- list< list<int> >::iterator insertar;
- cont=1;
- for(insertar=resultado.begin();cont<(int)Union;++insertar,cont++);
- resultado.insert(insertar,filresultado);
- resultado.erase(insertar);
- }
- int printMatrix(string Mensaje,list< list <int> > toprint)
- {
- cout<<Mensaje<<endl;
- list< list<int> > ::iterator imprimema;
- for(imprimema=toprint.begin();imprimema!=toprint.end();++imprimema)
- {
- list<int> ::iterator imprimeme;
- for(imprimeme=(*imprimema).begin();imprimeme!=(*imprimema).end();++imprimeme)
- cout<<(*imprimeme)<<" ";
- cout<<endl;
- }
- }
- /*
- *
- */
- int main(int argc, char** argv) {
- int p;
- cout<<"Dame el numero columnas matriz 1: ";
- cin>> m;
- cout<<"Dame el numero de filas de la matriz 1 (columnas matriz 2):";
- cin>>p;
- cout<<"Dame el numero de filas matriz 2: ";
- cin>>n;
- for (int i=0;i<m;i++)
- {
- list<int> columna;
- for (int j=0;j<p;j++)
- columna.push_back(rand()%10);
- matrix1.push_back(columna);
- }
- for(int i=0;i<p;i++)
- {
- list<int> columna;
- for(int j=0;j<n;j++)
- columna.push_back(rand()%10);
- matrix2.push_back(columna);
- }
- printMatrix("Matriz 1",matrix1);
- printMatrix("Matriz 2", matrix2);
- for(int i = 0;i<m;i++)
- {
- list<int> filaarr;
- resultado.push_back(filaarr);
- }
- pthread_t threads[m];
- int rc, t;
- for(t=0;t<m;t++){
- rc = pthread_create(&threads[t], NULL, MultFila, (void *)(t+1));
- if (rc){
- cout<<"Error al crear el subproceso: "<< rc<<endl;
- exit(-1);
- }
- }
- for(t=0;t<m;t++)
- {
- pthread_join(threads[t],NULL);
- }
- printMatrix("Resultado",resultado);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement