Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Judiu

#1
Programación C/C++ / Ayuda Codigo C++
26 Noviembre 2014, 23:55 PM
Pues tengo el problema de que cuando ejecuto el codigo todo sale bn, exepto la parte donde me dice las clases no asignadas, en la varaible edif.clasesasignadas lo uso para verificar si la clases fue o no asignada pero no funciona correctamente el resto si funciona bn!

Gracias por cualquier ayuda que me puedan brindar!

Código (cpp) [Seleccionar]
#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;

}
}
}

}