Escoger dos cuentas aleatorias y transferir montos entre ellas; en codigo c++
Respuestas a la pregunta
Respuesta:
okey......??
Explicación:
Respuesta:
#include <iostream>
#include <thread>
#include <time.h>
#include <stdlib.h>
#define cantidad 100
using namespace std;
bool s1, s2;
int turno;
int cuentas[cantidad];
void traspasos(void);
void contabilizar(void);
void p1(){
while(true){
s1=true;
turno=1;
while(s2==true and turno==1);
contabilizar(); //SECCION CRITICA
s1=false;
}
}
void p2(){
while(true){
s2=true;
turno=0;
while(s1==true and turno==0);
traspasos(); //SECCION CRITICA;
s2=false;
}
}
void traspasos(){
srand(time(NULL));
int cuenta[2], monto; //conservar las cuentas y los montos para el traspaso
for(int i=0; i<2; i++){//para dos cuentas
cuenta[i] = rand() % 99; //tener una cuenta aleatoria
}
monto = rand() % 10;
cuentas[cuenta[0]] = cuentas[cuenta[0]] + monto;
cuentas[cuenta[1]] = cuentas[cuenta[1]] - monto;
}
void contabilizar(){
int suma=0;
for(int i=0; i<cantidad; i++){
if(cuentas[i]<10){
cout<<cuentas[i]<<" ";
}else{
cout<<cuentas[i]<<" ";
}
suma = suma + cuentas[i];
cout<<endl;
}
cout<<"\nLa suma de todas las cuentas es : "<<suma<<endl;
}
int main()
{
s1=false;
s2=false;
turno=0;
for(int i=0; i<cantidad; i++){
cuentas[i] = 100;
}
thread a(p1); //Aqui contabilizo
thread b(p2); //Aqui hago los traspasos de montos
a.join();
b.join();
return 0;
}
Explicación:
Todo siendo un gozu