Está en la página 1de 3

ejercicio3.

pdf

julvos

Programación de sistemas concurrentes y distribuidos

2º Grado en Ingeniería Informática

Escuela de Ingeniería y Arquitectura


Universidad de Zaragoza

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
//------------------------------------------------------------------------------
// File: practica_1_V2.cpp
// Author: PSCD-Unizar
// Date: septiembre 2020
// Coms: Parte del práctica 1 de PSCD
// Compilar mediante
// g++ practica_1_V2.cpp -o practica_1_V2 -std=c++11 -pthread
//------------------------------------------------------------------------------

#include <iostream>
#include <thread>
#include <string>
#include <chrono>
#include <ctime>
#include <cmath>
using namespace std;

void calculoMedia(double v[], int N,double& media, bool& terminado){


terminado = false;
for(int i=0;i <N; i++){
media += v[i];
}
media = media/N;
terminado = true;
}

void minMax(double v[], const int N, double& max, double& min){


max = v[0];
min = v[0];
for(int i = 1; i < N; i++){
if(v[i] > max){
max = v[i];
}
if(v[i] < min){
min = v[i];
}
}
}

void calculoDesviacion(double v[], const int N, double& desv, double media, bool
terminado){
while(!terminado){}
for (int i = 0; i < N; i++) {
desv += pow(v[i]-media, 2);
}
desv = sqrt(desv/N-1);
}

int main(int argc, char* argv[]) {


srand(time(nullptr));
const int N = 100;
bool terminado = false;
double media = 0.0;
double max = 0.0;
double min = 0.0;
double desviacion = 0.0;
thread P[3];
double v[N] = {};

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6185051
for (int i=0; i<N; i++) {
v[i] = (double)rand();

}
P[0] = thread(&calculoMedia,v,N,ref(media),ref(terminado));
P[1] = thread(&minMax,v,N,ref(max),ref(min));
P[2] = thread(&calculoDesviacion,v,N,ref(desviacion),media,terminado);

for (int i=0; i<3; i++) {


P[i].join();
}
cout << "#datos " << N << endl;
cout << "media: " << media << endl;
cout << "máx: " << max << endl;
cout << "mín: " << min << endl;
cout << "sigma: " << desviacion << endl;
cout << "Fin\n";
return 0;
}

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6185051

También podría gustarte