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ú

Mensajes - Xandrete

#121
Yo descuartizaba gente en mis ratos libres.
#122
¿Recursivamente? ¿Sin acceder a punteros?

Bueno, esta es mi idea:

Código (cpp) [Seleccionar]
template <class TElem>
Result TPila<TElem>::cimaAux(){
Result r;
if (_cola.esVacio()) r.found = true;
else {
TElem aux = _cola.primero();
_cola.quitarPrimero();
r = _cola.cimaAux();
_cola.ponDetras(aux);
if (r.found == true) {
r.elem = aux;
r.found = false;
}
}
return r;
}

template <class TElem>
const TElem& TPila<TElem>::cima() throw (EAccesoIndebido){

if(esVacio()) throw EAccesoIndebido("Error: no existe cima de la pila vacía");
Result r = cola.cimaAux();
return r.elem;
}


Previamente tendrías que definir el struct Result:

Código (cpp) [Seleccionar]
struct Result {
TElem elem;
bool found;
};


Lo puedes definir en los atributos públicos de la clase, en los privados, o fuera de la clase (lo que en este último caso tienes que usar la plantilla). Asegúrate de que he usado los nombres correctos de las funciones, porque estoy tan acostumbrados a los de la librería estándar que casi me ha costado ponerlos en español.

Saludos

P.S. ¿Por qué no os dicen también que tenéis que hacerlo sin mirar la pantalla del ordenador, con una mano, y cantando "¿Donde vas Alfonso XII?" ? Mira que son rebuscados ;D
#123
¿Sin cambiar la definición de la función? Hombre, en ese caso sería útil que nos pusieras la implementación y/o la especificación de la clase cola que usas (que claramente no es la estándar). Lo normal es que una cola tenga un puntero hacia el primer nodo, y que cada nodo tenga un puntero hacia el nodo que le sucede. El elemento que buscas (la cima) es el último de la cola, por lo que su puntero al siguiente elemento tendrá valor NULL. Puedes ir navegando a través de la cola hasta que te encuentres un nodo que no apunte a nadie (valor NULL). En este caso no modificas nada y no tendría que producirse el error C2662.

Cuando la cola es referencia constante, no puedes modificarla. Ni en la misma función ni en funciones auxiliares. Por eso no te deja.

Saludos
#124
http://msdn.microsoft.com/en-us/library/2s2d2tez%28v=vs.80%29.aspx

Estas usando acciones que modifican la cola en una función en que es referencia constante. Necesariamente, la cola se ha de modificar en la función cima(), luego ha de ser referencia no constante.

Código (cpp) [Seleccionar]
template <class TElem>
const TElem& TPila<TElem>::cima() throw (EAccesoIndebido){

if(esVacio()) throw EAccesoIndebido("Error: no existe cima de la pila vacía");
else {
TElem aux;
aux=_cola.primero();
_cola.
cima();
_cola.ponDetras(aux);
return aux;}
//fin else
}


Saludos
#125
Es un bucle con una condición doble.  Por un lado, se lee del buffer de entrada, se hace la conversión de caracteres a entero y se guarda en n el resultado. Si falla este proceso en algún punto (se lee EOF - End Of File- , o lo que se lee no se puede convertir a entero) se sale del bucle. Por otro lado, se comprueba si el valor de n es mayor que 0. Si no lo es, se sale del bucle (una entrada de 0 debía producir el fin del programa, según tu enunciado). En C++ las condiciones siempre se leen de izquierda a derecha, por lo que siempre podrás estar seguro de que se lee el valor antes de comprobar si es mayor que 0.

Una forma alternativa de implementarlo es la siguiente:

Código (cpp) [Seleccionar]
int n;
cin >> n;
while (n > 0) {
   // CODIGO DEL BUCLE
   cin >> n;
}


De la manera que te propuso ghastlyX queda más compacto.

Saludos
#126
Cita de: ShotgunLogic en 23 Enero 2012, 00:36 AM
Si, pero aparte de la maquina virtual deberian de ponerse las pilas con la genericidad, el multihilo y demas cosas como hizo C#

O dedicarse a plantar lechugas.
#127
Cita de: ZedGe en 22 Enero 2012, 11:03 AM
ok muchas gracias =D.....

otra pregunta hay alguna forma de leer el fichero y retornar la cantidad de lineas sin saber el max total de estas ni su largo??

es decir un fichero con 50 caracteres por linea  123 lineas retornara 123

ese mismo fichero pero con 10 caracteres y  123123123 lineas retorne 123123123


ya que como lei yo le asigne un max de 8000... lo que si tengo solo 10 lineas es un gasto de memoria

Cuenta los saltos de línea ('\n') y súmale 1. Por ejemplo.

Saludos
#128
Coincido contigo plenamente, Littlehorse. Sólo quería nombrar los procesadores Java como eso, como curiosidad.

Cita de: armizh en 21 Enero 2012, 20:51 PM
Pero eso no seria como lo mismo que hace C/C++? en ese caso se sacrifica la ventaja de Java con respecto a C/C++ por lo que se aplica la expresion susodicha xd. Digo, eso es casi como compilar el bytecode de Java! o talvez lo sea  :rolleyes: pero no estoy muy informado sobre esos procesadores.
Concuerdo con Littlehorse en lo de C/C++, y personalmente pienso que estos dos lenguajes siguen siendo la mejor opcion dentro del campo de la programación. Aunque conozco muchos casos de programadores/aficionados de C que no logran acostumbrarse a C++ y viceversa, incluso en este foro tambien hay varios casos

Yeeep. Servidor tampoco es experto en procesadores Java >.<

¡Saludos!
#129
Cita de: armizh en 21 Enero 2012, 16:32 PM
Pero me da que esos procesadores no son muy estables, ademas de sacrificar la unica gran ventaja de Java sobre C/C++ que es la portabilidad real, comparada con la portabilidad por codigo de C/C++.
Sin esa ventaja, como se dice en buen chileno, C/C++ le da mil patas en la r*** a Java, jeje perdon por eso xd
Saludos.

Expresión totalmente correcta  ;). Pero, ¿por qué dices que sacrifica portabilidad? En principio, no. Lo único que tienen estos procesadores es que interpretan directamente el bytecode de Java. Pero este bytecode sigue funcionando perfectamente sobre JVM bajo otras arquitecturas (no es que se le haga ninguna modificación especial para poder ser ejecutado con un procesador Java).

Saludos
#130
ApOkAlizE, ¿has visto la película V de Vendetta hace poco, por casualidad  ;D?

Saludos