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 - do-while

#251
¡Buenas!

Mi primera distro fue Debian.

Decidí pasarme a Linux cuando acabó el soporte de Windows XP y vi que el sistema sanitario y las administraciones públicas tenían que malgastar auténticas barbaridades de dinero para renovar licencias en sistemas operativos de Microsoft. Vi que gran parte del problema era el uso y promoción que se hacía a nivel doméstico y en sistemas educativos para tener a la gente bien agarrada por los huevos y que no supiese utilizar otro sistema operativo, así que decidí que poco a poco, empezando por mí y siguiendo con mi entorno más cercano, iba a empezar a utilizar y a promocionar sistemas GNU/Linux, y de momento ya tengo unos seis amigos utilizando *Ubuntu o Mint, menos es nada.

¡Saludos!
#252
A parte de todo lo dicho:

Cita de: Wolfman19951 en  2 Agosto 2015, 23:12 PM
C:\Users\personal\AppData\Local\Temp\cc47RtYU.o   project3.cpp:(.text+0x1ac): undefined reference to `Persona::MClase()'

Si lees el error resulta evidente que es lo que pasa. Estas llamando a una función que o bien no existe o bien el compilador no sabe donde está. En este caso lo que pasa es lo primero.

Mira tu código:
Cita de: Wolfman19951 en  2 Agosto 2015, 23:12 PM
Código (cpp) [Seleccionar]
int MClase()
{
int clase[5], cliente;
cout<<clase[cliente];
}



   int main()
   {
   Persona P[5];
   P[5].SRuta();
   P[5].SClase();
   P[5].MClase();



Esto es una función independiente de cualquier clase, pero en main estas llamando a una función miembro de una clase. Decide si quieres que la función sea miembro de la clase o no, y luego realiza la llamada de forma correcta según lo que hayas elegido.

¡Saludos!
#253
Cita de: joecarl en 31 Julio 2015, 09:31 AM
engel lex ya ha dicho exactametne lo que acaba de decir do-while

Reconocer la posición de una letra dentro de un alfabeto es una utilidad. engel lex ha incrustado un código en la función principal que no es reutilizable, además mezclando el código que debería de tener la función con el código que realiza el trabajo que tiene que llevar a cabo el propio programa. Yo he aportado una función que lleva a cabo la detección de la posición de una letra de forma completamente independiente al objetivo del programa principal, por lo que ese código se puede reutilizar donde se quiera. No veo relación alguna con lo que engel lex ha propuesto.

Cita de: joecarl en 31 Julio 2015, 09:31 AM
vchar4 pone lo mismo aunq ya se le ha dicho que es un código un tanto trabajoso

Como ya he dicho en el primer párrafo del post anterior, estaba mostrando que si se trabaja con el valor numérico de los caracteres el trabajo es mucho más simple que incrustar un switch con 27 casos (¿Son 27? nunca lo he sabido y no voy a ponerme a contar ahora, digamos que son 'Z' - 'A' + 3 casos XD)

Cita de: joecarl en 31 Julio 2015, 09:31 AMpara todos que tengamos en cuenta lo que dice cada uno, para poder crecer y esas cosas.

Eso eso, a ver si aprendemos a ver las diferencias entre lo que cada uno escribe.

¡Saludos!
#254
¡Buenas!

Si tienes en cuenta que los caracteres no dejan de ser números enteros vas a ahorrar mucho código y todo te va a quedar más claro:


int posicion(char letra)
{
    letra = touper(letra);

    /* Las letras, tanto las mayúsculas como las minúsculas están ordenadas de la A a la Z en la tabla ASCII */
    if(letra >= 'A' && letra <= 'Z')
    {
        if(letra <= 'N')
            return letra - 'A';
        else
            return letra - 'A' + 1;
    }
    /* si mal no recuerdo, sin signo, la ñ y Ñ tienen los siguiente ASCII, corregidlo si no es así. */
    else if((unsigned char) letra == 164 || (unsigned char) letra == 165)
        return 'N' - 'A' + 1;

    return -1;
}


Así para cualquier letra 'A' - 'Z' tendrás el orden que ocupa en el alfabeto y si el parámetro que se le pasa a la función no es una letra te devolverá -1, por lo que siempre podrás detectar "errores".

¡Saludos!
#255
¡Buenas!

¡Ese código es muy ineficiente!

Cuantos más elementos hayas obtenido más difícil será que rand te devuelva un elemento no repetido.

En este caso sería mucho más eficiente hacer lo siguiente:

Para i ente 0 y MAX - 1
    n = aleatorio (0, MAX - 1);

    si(i != n)
       intercambiar(v(i),v(n));
    fin si
Fin Para

En MAX iteraciones tienes un vector reordenado de forma aleatoria.

¡Saludos!
#256
Y me pregunto yo... ¿Qué más da que saquen un parche si el 99'9% de los terminales con Android no va a recibir esa actualización?
#257
¡Buenas!

Ese algoritmo tiene bastantes pegas, si el número cuya raíz cuadrada quieres calcular es menor que 10-6 te devolverá el mismo número, luego dependiendo de la precisión que utilices no estarás calculando la raíz cuadrada de nada, además ten en cuenta que si el número es de orden de k·10n, en m iteraciones tendrás una aproximacion m·10-3 y la comparación seria: k·10n - m210-6 >=10-3, luego para llegar a una aproximación con un error menor que el indicado tendrías que realizar (k·10n+6 - 103)1/2 operaciones (quédate con la parte entera mas uno), por poner un ejemplo, para calcular la raíz cuadrada de 104 tendrías que realizar unas 105= 100.000 iteraciones.

Ya que estás estudiando ingeniería puedes intentar usar un poco ese cerebro que Dios te ha dado y utilizar algo más efectivo, como el teorema de Bolzano (no entro en otros métodos numéricos, ya que en cualquier curso básico de análisis se estudia Bolzano, y con esto es suficiente), que deberías conocer, pero por si no te acuerdas aquí te dejo el enunciado:

Si una función continua sobre un intervalo J tiene signos opuestos evaluada en sus extremos, entonces existe al menos un punto en J cuya imagen es cero.

Es decir, si f:J=[a,b]---->R cumple que f(a)·f(b) < 0 => existe un número real c, a < c < b, tal que f(c)=0.

En este caso tienes la función f(x)=a-x2, ya que si a-x2=0 entonces x=sqrt(a).

Así, si a = 1 ó a = 0, ya tienes la solución. Si a > 1 a > squrt(a) > 1 y tendrás que buscar la solución en el intervalo inicial [1,a], y si 0 < a < 1 a < sqrt(a) < 1 y el intervalo inicial será [a,1],

Sea cual sea el intervalo inicial lo llamaremos [a0,b0] y sabemos que f(a0)·f(b0) < 0. así que escogemos m0=(a0+b0)/2

Si f(m0) <= error_aceptado ya tenemos la solución buscada, sino, estaremos en uno de los dos siguientes casos:

- f(a0)·f(m0) < 0: En este caso hacemos a1=a0, b1=m0

-f(m0)·f(b0) < 0: Y hacemos a1=m0, b1=b0

Y aplicamos el proceso anterior al nuevo intervalo [a1,b1]

Tras el paso n, la longitud del intervalo [an,bn] será (b0-a0)·2-n, así que en el peor de los casos tendremos que llegar a que esta longitud sea menor que el error aceptado, y en este caso el número de iteraciones será log(2)-1·log((b0-a0)/error)

si a=104 y error=10-3 entonces log(2)-1·log((b0-a0)/error)=23,2533... y como máximo en 24 iteraciones llegaremos al valor que buscamos, lo que es una mejora considerable con respecto al algoritmo inicial.

Si el error utilizado es muy pequeño puede darse el caso de que la longitud del intervalo no pueda reducirse debido a que la distancia del punto medio con respecto a cualquiera de los extremos sea menor que el incremento mínimo que ofrece un número de coma flotante. También tendrás que detectar este caso, es decir, tendrás que comprobar que el nuevo punto medio sea distinto del de la iteración anterior, y si fuesen iguales este será la mejor aproximación que puedas obtener con el error que hayas elegido.

Otra cosa más. La derivada f'(x) = -2x toma valores positivos para valores negativos de x y valores negativos para valores positivos de x, pero teniendo en cuenta que la raíz cuadrada de un número negativo no es un número real, descartamos directamente los valores negativos de a, luego los valores de la variable x serán siempre positivos y así f siempre será decreciente en los intervalos considerados, por lo que la raíz será única y no llegaremos a bucles infinitos salvo en el caso descrito en el párrafo anterior.

¡Saludos!
#258
Series.ly, una de las páginas en español más populares para descarga y visualización de contenidos multimedia vía streaming, ha emitido un comunicado desmintiendo la detención de sus administradores en el día de ayer. Una información de la que se hicieron eco una gran cantidad de medios con los habituales grandes titulares en este tipo de noticias: "golpe mortal a la piratería y a las descargas ilegales".

Series.ly aseguran que esas informaciones son falsas, que sus administradores están en libertad y que los hechos comentados sucedieron hace un mes. "Ante las informaciones que están apareciendo en algunos medios de comunicación queremos decir lo siguiente":

    Los hechos a los que se hace referencia en la mayoría de informaciones publicadas ocurrieron hace un mes, en concreto el pasado 17 de junio. Una unidad de la Policía Nacional se presentó en nuestras oficinas para practicar un registro. En todo momento colaboramos con ellos para facilitarles toda la información que necesitaban. Cuando terminó el registro fuimos detenidos, declaramos ante la policía y se nos puso en libertad.
    A día de hoy aún no sabemos ni quien ha puesto la denuncia ni tenemos más información sobre el presunto delito del que se nos acusa. Siempre hemos respetado la ley, y cuando a principios de 2015 esta cambió operamos y comunicamos todos los cambios oportunos en nuestra página, que sigue funcionando, para adaptarnos al nuevo cambio legislativo.

Más información:
http://www.muycomputer.com/2015/07/17/series-lyç

Noticia relacionada:
http://foro.elhacker.net/noticias/la_policia_detiene_a_los_administradores_de_seriesly-t438610.0.html
#259
Una pregunta.

Se supone que dejaron de ofrecer enlaces justo en el momento en  el que cambió la LPI, ¿No?

Hasta ese momento enlazar no era delito, ¿o si? además, ellos no alojaban ningún contenido, solo tenían listas de enlaces.

¿Alguien sabe si puede pasarles algo?

¡Saludos!

Esta noticia se contradice con una publicada hoy, por lo menos, en  muycomputer:
http://www.muycomputer.com/2015/07/17/series-ly

¡Saludos!
#260
Cita de: Orubatosu en 14 Julio 2015, 09:01 AM
Es el modus operandi de esa gente. Si algo sale mal, la culpa es de otros. Si son unos incompetentes, la culpa es de los malvados alemanes. Si hunden su economia, la culpa del norte

Hablas como si la culpa de la situación actual de Grecia fuese la consecuencia de los 6 meses que lleva gobernando este partido, cuando la realidad es que si los griegos están como están es a causa, entre otras cosas, de los despilfarros y falseamientos de cuentas que han llevado a cabo los gobiernos anteriores.

En españa sucede lo mismo. Entre los gobiernos del PP, empezando con Aznar, y PSOE, aprobaron leyes que permitieron la edificación sin límites, los prestamos/hipotecas desmesurados y despilfarros varios hasta llevar al país a una situación insostenible en la que todo se fue al garete y nació la crisis.

¡Saludos!