elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda Codigo C++
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Codigo C++  (Leído 4,518 veces)
Judiu

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda Codigo C++
« Respuesta #10 en: 27 Noviembre 2014, 02:20 am »

Este le resultado cambiando los valores donde te digo ahora si funciona, ademas le dije al programa que me mostrar los resoltados de los dos ultimos for y dio lo siguiente



Como puedes ver tambien da 13 ahora bien si te fijas en el salon 2-1 perfectamente se puede asignar la clase 15 con una diferencia de 15, en esta parte si creo que tengo un problema con los if.


En línea

tremolero

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: Ayuda Codigo C++
« Respuesta #11 en: 27 Noviembre 2014, 02:36 am »

A ver te estas haciendo un lio gigante, y yo con lo poco que se de que va el ejercicio, estoy descrifando todo el ejercicio mirando el codigo, asi que ya no se como ayudarte, porque tengo la sensacion de que estoy entendiendo cosas sin verlas, mientras que tu si que las estas viendo y no las entiendes.

Primero pedirte que intentes escribir lo mejor posible, ya que hay cosas que no he logrado entender y buff, me estoy volviendo loco.

Te digo, creo que antes llevabas mejor el codigo y te explico, antes coincidian porque si dos contadores iguales, estan en los mismos lugares, es normal que muestren el mismo valor por lo que le he dado prioridad a que el listado sea correcto.

Y lo que yo habia hecho, era sacar el "edif.clasesasignado++;" de los dos if de 5. y habia metido este if al final de esos dos.

Código:
if(edif.clasesasignadas[q] == 1){
                    edif.clasesasignado++;
}

De tal manera que coincidia el numero con el listado.

Ahora cual es el problema que veo cuando lo ejecuto, que mientras que muchas clases no han sido asignadas, los salones si que lo son, por lo que imagino que ocurrira el mismo error que con lo anterior.

Te pego el codigo como lo he dejado yo, sigue teniendo el fallo que te he comentado, si no lo consigues solucionar dilo.

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;
}

}
}
if(edif.clasesasignadas[q] == 1){
                    edif.clasesasignado++;
}
}
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;

}
}
}

}


En línea

Judiu

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda Codigo C++
« Respuesta #12 en: 27 Noviembre 2014, 03:27 am »

Parce gracias por tu ayuda ya ha funcionado correctamente, te lo agradezco y disculpas si escribi con mala ortografia pero es que me toca entregarlo hoy.

Gracias.
En línea

tremolero

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: Ayuda Codigo C++
« Respuesta #13 en: 27 Noviembre 2014, 03:55 am »

No te preocupes.

De nada y bueno cualquier duda pregunta.

Un saludo.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Codigo
Programación Visual Basic
Mitsu_POWA 1 2,126 Último mensaje 26 Julio 2005, 00:25 am
por byebye
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 12,503 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 30,324 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
ayuda codigo
Programación C/C++
kunai 3 2,702 Último mensaje 1 Junio 2011, 12:56 pm
por Akai
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines