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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 36
51  Programación / Programación C/C++ / Re: Ayuda con cadenas de caracteres. en: 27 Noviembre 2014, 05:35 am
Soy de españa y aqui se le llama "almohadilla" pero bueno algo mas que sé :P y respecto al tik-tak-toe yo siempre he pensado que eran X(equis) y O :P

De nada y ya sabes, cualquier duda adelante.

Un saludo.
52  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 03:55 am
No te preocupes.

De nada y bueno cualquier duda pregunta.

Un saludo.
53  Programación / Programación C/C++ / Re: Ayuda Codigo C++ 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;

}
}
}

}
54  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 02:06 am
El numero de clases no asignado ya que si lo verificas con el numero de clases asignadas que es 24 y para un total de 25 entonces 25-24=1
Agregandole que el numero de salones asignados y el numero de clases asginadas tiene que ser iguales.




PD Pido disculpas por usar Paint, es que estoy de afan.

Esto no es correcto, ya que como te he explicado realmente el numero es el que esta mal, y el listado el que esta bien, por el hecho de que el listado tambien recorrer el triple for, la diferencia esta en que el primero aunque entre varias veces siempre escribe "1", sin embargo en el otro el contador sigue sumando. eso significa que en una situacion en el que en el primero se escribe un "1", en el otro el contador puede sumar 3 veces, eso significa que puede dar un resultado mayor el contador que el otro.

Ademas el contador tiene una resta con un numero estatico "25", es decir, el mismo numero que muestras arriba es el mismo numero que muestras abajo restandole 25, asi que al sumar ambos van a dar 25 si o si.
55  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 01:47 am
Bueno a ver, ya he visto como solucionarlo, te explico mi metodo de encontrar el problema.

1.- Localizo en el codigo el error que has visto, en este caso hay un contador y luego un listado, asi que tenemos.

"edif.clasesasignado" esto es el contador.

if(edif.clasesasignadas[q] == 0) y esta la condicion que se debe cumplir para salir en la lista.

2.- busco en el codigo donde tienen relacion y veo que coinciden en varios puntos en este trozo.

Código:
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;
}
}
}

3.- Asi que viendo que el error debe de estar ahi, analizo que puede ocurrir y veo lo siguiente:

edif.clasesasignadas[q] = 1;
edif.clasesasignado++;

Ahi ya veo el error, resulta que estan dentro de un triple for, en el primero siempre le vas a escribir "1" aunque entre muchas veces pero en el segundo si entran varias veces se le sumara tantas veces como entre. Asi que ahi esta el problema, no he analizado si esos for son correctos y necesarios al igual que si los if son correctos, ya que no se exactamente que quieres hacer.

Asi que la solucion es que solo lo escriba una vez igual que en el primero.

Espero que lo hayas entendido, he preferido no ponerte la solucion al pie de la letra, de todas maneras si quieres que te la ponga, dimelo y te la escribo.

Un saludo.
56  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 01:31 am
Vale, y una pregunta, tu sabes cual de los dos es el correcto?
el numero que hay debajo de "numero de clases no asignado" o el listado que se muestra despues?
57  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 00:51 am
a ver, estoy mirando el codigo asi por encima, asi que si me lo explicas tu, mejor para todos.

Pero te digo, por lo que veo, siempre muestra 1.

ese valor lo saca de aqui "edif.clasesasignado"

y por lo que veo, eso lo manipulas dentro de los if que tienes en un for, por lo que veo esos if, estan cubriendo todas las posibilidades sino me equivoco eso lo sabras tu, porque no voy a comprobrarlos, la cosa es simple, si cubren todas las posibilidades y le dices al for que haga 24 pasadas, con esto "edif.clasesasignado++;" estas haciendo que ponga un 24, si al final le restas 25, siempre te va a dar uno.

Asi que si quieres explicas correctamente y te intento ayudar a encontrar el fallo, o tal vez tu ya me has entendido y has visto en lo que fallas.

Un saludo.
58  Programación / Programación C/C++ / Re: Ayuda Codigo C++ en: 27 Noviembre 2014, 00:20 am
Hola Judiu, pero cual es el problema que te salen warning y los quieres quitar, o directamente no te ejecuta?

Yo por lo que he visto te falta un "}"

Si no te ejecuta seguramente sera eso.

Un saludo.
59  Programación / Ingeniería Inversa / Re: Editar nº serie en: 26 Noviembre 2014, 18:34 pm
pero... ese 0C esta en la ubicacion de la _
sino me equivoco, aunque claro tambien equivale a 12 como tu dices. eso significa que _ oculta un numero?

y en el 10.28 que tu pones, has sustituido el 2C por la coma?

Creo que no estoy ayudando mucho, a ver si alguien mas entendido.

Parece que mas mejor encaminado que yo :S

Aunque sino me equivoco tu has intentado cambiar algun numero y falla, asi que imagino que tengo razon con lo de que el codigo de delante o el de atras tiene algun tipo de relacion, imagino que sera al estilo de la letra en el dni, otra cosa no se me ocurre.

Un saludo.
60  Programación / Ingeniería Inversa / Re: Editar nº serie en: 26 Noviembre 2014, 17:51 pm
hola, no tengo npi, pero a ver te digo que se me ocurre.

por lo que dices, cambiando todo ese numero por otra si que funciona y solo cambias esa linea, pero si cambias solo un numero no funciona, imagino que te tiene algun tipo de relacion el nº de serie con el codigo de delante y de detras.

Asi que si lo que pretendes es ser capaz de poder inventarte uno y que funcione, tendrias que averiguar como estan relacionados, y para que alguien pueda ayudarte, lo principal seria que pusieras dos como minimo y cuantos mas pongas mas probabilidades hay de saber como funciona.

Por cierto, ese 12 delante del 08 de donde lo has sacado?

ami se me ocurre:
Citar
23.00_08.15_10012649
23.00 < lahora
08.15 < mes . año
10012649 alguna identificacion o numero aleatorio.
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 36
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines