#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <time.h>
using namespace std;
typedef struct edif{
int edificio [5][5]={{21,35,36,41,20},{22,34,30,28,40},{25,31,27,25,36},{33,32,26,24,41},{37,23,29,37,38}};
/*Se llena la matriz con valores estaticos para el programa */
int salonvacios[5][5]; //Variable para saber que salones ya se encuentra ocupados.
int clases[25] = { }; //Variable para guardar tamano de clases.
int clasesasignadas[25]; //Varibale para saber clases no asignadas.
int tamigual; //Variable para asignaciones iguales.
int tam05=0; //Varibale para asignaciones diferencia 5.
int tam10=0; //Varibale para asignaciones diferencia 10.
int tam15=0; //Varibale para asignaciones diferencia 15.
int tam20=0; //Varibale para asignaciones diferencia 20.
int salonesnoasignados=0; //Contador Salones no asigandos.
int clasesnoasignado=0; //Contador Clases no asignadas.
int salonesasignados=0; //Contador Salones asigandos.
int clasesasignado=0; // Contador clases asignadas
int temp0 = 0; //Variable temporal
int temp1 = 0; //Variable temporal
int temp2 = 0; //Variable temporal
int temp3 = 0;
};
edif edif;
int main(){
srand(time(NULL));
for (int q=0;q<25;q++){
edif.clases[q]=20+(rand()%41); // Asigna valores al azar desde 20 a 60 para el numero de personas por clase
/*Si el numero de peresona se predefine en la estructura eliminar esta linea*/
edif.clasesasignadas[q] = 0;
/*Se asigan valores en 0 en dado caso que que la direccion de memoria ya tenga un dado por OS*/
cout << edif.clases[q] << endl;
}
for(int q =0; q<5; q++){
for(int w=0; w<5; w++){
edif.salonvacios[q][w] = 0;
/*Se asigan valores en 0 en dado caso que que la direccion de memoria ya tenga un dado por OS*/
}
}
for(int q=0;q<25;q++){
edif.temp0=edif.clases[q];
for(int w=0;w<5;w++){
for(int e=0;e<5;e++){
if((edif.temp0 == edif.edificio[w][e]) && (edif.salonvacios[w][e] == 0) ){
edif.salonvacios[w][e] = 1;
edif.clasesasignadas[q] = 1;
edif.salonesasignados++;
edif.clasesasignado++;
edif.tamigual++;
break;
}
edif.temp1 = edif.temp0 + 5;
if((edif.temp1 > edif.edificio[w][e]) && (edif.temp0 < edif.edificio[w][e]) && (edif.salonvacios[w][e] == 0) ){
edif.salonvacios[w][e] = 1;
edif.clasesasignadas[q] = 1;
edif.salonesasignados++;
edif.clasesasignado++;
edif.tam05++;
break;
}
edif.temp1 = edif.temp0 + 10;
if((edif.temp1 > edif.edificio[w][e]) && (edif.temp0 < edif.edificio[w][e]) && (edif.salonvacios[w][e] == 0) ){
edif.salonvacios[w][e] = 1;
edif.clasesasignadas[q] = 1;
edif.salonesasignados++;
edif.clasesasignado++;
edif.tam10++;
break;
}
edif.temp1 = edif.temp0 + 15;
if((edif.temp1 > edif.edificio[w][e]) && (edif.temp0 < edif.edificio[w][e]) && (edif.salonvacios[w][e] == 0)){
edif.salonvacios[w][e] = 1;
edif.clasesasignadas[q] = 1;
edif.salonesasignados++;
edif.clasesasignado++;
edif.tam15++;
break;
}
edif.temp1 = edif.temp0 + 20;
if((edif.temp1 > edif.edificio[w][e]) && (edif.temp0 < edif.edificio[w][e]) && (edif.salonvacios[w][e] == 0) ){
edif.salonvacios[w][e] = 1;
edif.clasesasignadas[q] = 1;
edif.salonesasignados++;
edif.clasesasignado++;
edif.tam20++;
break;
}
}
}
cout
<< "El numero de salones del edificion son 25" << endl
<< "El numero de clases a asignar son de 25" << endl
<< "Numero de salones Asignados" << endl
<< edif.salonesasignados << endl
<< "Numero de Salones Libres" << endl
<< 25-edif.salonesasignados << endl
<< "Numero de clases Asignadas" << endl
<< edif.clasesasignado << endl
<< "Igual" << endl
<< edif.tamigual << endl
<< "Diferencia de 5" << endl
<< edif.tam05 << endl
<< "Diferencia de 10" << endl
<< edif.tam10 << endl
<< "Diferencia de 15" << endl
<< edif.tam15 << endl
<< "Diferencia de 20" << endl
<< edif.tam20 << endl
<< "Numero de Salones No asignados" << endl
<< 25-edif.salonesasignados << endl
<< "Numero de clases no Asignadas" << endl
<< 25-edif.clasesasignado << endl;
for (int q=0;q<25;q++){
if(edif.clasesasignadas[q] == 0){
edif.clasesnoasignado++;
cout
<< "\t\t La clase numero " << " " << q << "no fue asignada. Tiene un valor de" << " "<< edif.clases[q] << endl;
}
}
for (int q=0;q<5;q++){
for (int w=0;w<5;w++){
if(edif.salonvacios[q][w] == 0){
edif.salonesnoasignados++;
cout
<< "\t\t El Salon numero " << " " << q << "- " << w << "no fue asignado. Tiene un valor de" << " " << edif.edificio[q][w] << endl;
}
}
}
}