Gracias por cualquier ayuda que me puedan brindar!
Código
#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; } } } }