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 - DarK_FirefoX

#481
Foro Libre / ¿Que opinan de los sueños?
27 Mayo 2015, 15:05 PM
Pues simplemente, quería saber que opinan otras personas de los sueños. Realmente no he encontrado información de los sueños que me convenza.

CitarLos sueños son manifestaciones mentales de imágenes, sonidos, pensamientos y sensaciones en un individuo durmiente, y normalmente relacionadas con la realidad.

CitarSoñar es un proceso mental involuntario en el que se produce una reelaboración de la información almacenada en la memoria, generalmente relacionada con experiencias vividas por el soñante el día anterior.

Entiendo más o menos el concepto, pero ¿Tendrán significado los sueños? ¿Representarán miedos o aspiraciones? ¿Deseos?

La verdad muchas de las personas que conozco y he podido preguntarle, me dicen que normalmente no sueñan (que debe ser que no recuerdan), pero en lo personal sueño casi todos los días (y recuerdo vívidamente). Y lo más interesante es que sueño con cosas raras e inverosímiles.

Vengo teniendo un sueño recurrente hace varios meses ya, donde estoy fuera de casa y cuando llego a mi edificio y tomo el ascensor, siempre me deja en un piso que no es, cuando tomo las escaleras y supuestamente debo llegar a mi apartamento, resulta que me he pasado dos pisos. Intentando abrir la puerta de mi apartamento (donde no hay nadie) siento ruidos en el interior, veo las ventanas abriéndose solas, las luces encenderse. Todo esto se repite constantemente. Lo raro es que no hay nadie adentro. A veces cuando trato de abrir la puerta se abre y puedo entrar para no ver a nadie, otras siento una fuerza tratando de halar la puerta en dirección contraria a mi, una fuerza que no es hecha por nadie.

En resumen, me gustaría saber ¿Que opinan de los sueños? ¿Que creen que pueden representar los sueños?

Salu2s

Nota: Citas de Wikipedia
#482
Creo que con lo que dice @Eleкtro ya lo tienes resuelto, igual, cualquier cosa pregunta de nuevo.

Ahora, quiero hacerte una sugerencia, esto es algo que realmente puedes tener en cuenta para el desarrollo de tus proyetos. Utiliza un solo lenguaje para definir tus cosas, o sea, si utilizas el español para identificar tus variables, métodos, etc. Mantenlo así en todo el proyecto, evita utilizar español aquí e inglés alla. También sería bueno si te acostumbraras a darle nombres descriptivos a tus controles/variables y evitar cosas como Button1, Button2, etc. Esto le dará claridad a tu código

Salu2s
#483
20 - Saber si dos cadenas son anagramas

El objetivo del siguiente código es comprobar si dos cadenas son anagramas. Lo primero ¿Qué es un anagrama? Es una palabra o frase que resulta de la transposición de letras de la otra palabra o frase. En el siguiente código vamos solo a tener en cuenta "palabras".

Código (csharp) [Seleccionar]
public static bool SonAnagramas(string a, string b)
        {
            if (a.Length != b.Length) return false;
            for (int i = 0; i < a.Length; i++)
            {
                bool igualdad = false;
                for (int j = 0; j < b.Length; j++)
                {
                    if (a[i] == b[j])
                    {
                        b = b.Remove(j,1);
                        igualdad = true;
                        break;
                    }
                }
                if (!igualdad) return false;
            }
            return b.Length == 0;
        }


El objetivo del código es ir verificando los caracteres de una cadena con la otra. Primero verificamos si las longitudes son iguales. En caso de que no lo sean, se devuelve false pues una tiene caracteres que no tiene la otra. El objetivo es iterar por una cadena y fijar un carácter, y entonces iterar sobre la segunda y comprobar si se encuentra uno igual. En caso de que se encuentre uno igual se modifica la segunda cadena y se elimina el carácter. El objetivo de esto es que si al final de iterar la longitud de esta cadena es mayor que 0 entonces no es un anagrama. Si lo es, en caso contrario. También hay que tener en cuenta que si por un carácter fijado en la primera cadena no se elimina ningún carácter en la segunda cadena, entonces ya podemos decir que no es un anagrama.

Para eliminar un carácter de la cadena, utilizamos el método Remove() que pertenece a la clase string, el método recibe una posición a partir de la cual se va a eliminar caracteres y la cantidad de caracteres a eliminar. El método devuelve un nuevo string, por lo tanto hay que asignárselo a la variable pues este no modifica la instancia sobre la cual se llame.




21 - Contar ficheros de una extensión dada dentro de un directorio incluyendo subcarpetas (recursivamente)

El siguiente código lo que hará es contar la cantidad de ficheros de una extensión dada dentro de un directorio y sus subdirectorios.

Primero que todo, utilizaremos un método portal al cual le pasaremos como parámetro la ruta del directorio, y la extensión (Ej.: ".txt", ".jpg", etc.) En este método utilizaremos dos cosas que voy a explicar a continuación:

Primero, la clase DirectoryInfo dentro del namespace System.IO (recuerden añadirlo). Esta clase tiene métodos para copiar, mover, renombrar, eliminar y enumerar directorios y subdirectorios. Aquí creamos una instancia de esta clase pasándole como parámetro al constructor de la misma la ruta del directorio.

También utilizamos un delegate Func que encapsula un método y devuelve un valor, en este caso utilizamos:

Código (csharp) [Seleccionar]
Func<FileInfo, bool>

Que recibe un parámetro FileInfo como parámetro de entrada y devuelve bool. Este delegate lo vamos a utilizar como condición para comprobar si el fichero tiene una extensión dada. El delegate devuelve true si la extensión del archivo referido por la instancia de FileInfo es igual a la extensión definida por el usuario.

Nota: Asumo que tienen algún conocimiento sobre delegate y encapsulamiento de métodos. Sino, pueden investigar sobre esto.

Ahora, FileInfo es otra clase dentro del namespace System.IO. Tiene métodos para copiar, mover, renombrar, eliminar y abrir ficheros. La misma referencia a un fichero dentro de un directorio.

Código (csharp) [Seleccionar]
/// <summary>
        /// Método portal
        /// </summary>
        public static int ContarFicheros(string path, string extension)
        {
            DirectoryInfo dir = new DirectoryInfo("Prueba"); //Creamos el DirectoryInfo pasándole la ruta del directorio

            Func<FileInfo, bool> extensionCondition = delegate(FileInfo fileInfo) { return fileInfo.Extension == extension; }; //Creamos el delegate

            return ContarFicheros(dir, extension, extensionCondition);
        }


Ahora, el método que se llama para contar los ficheros:

Código (csharp) [Seleccionar]
public static int ContarFicheros(DirectoryInfo directory, string extension, Func<FileInfo, bool> extensionCondition)
        {
            int total = 0;
            if (directory.GetDirectories().Count() == 0)
            {
                total = directory.GetFiles().Count(extensionCondition);
                return total;
            }
            else
            {
                total += directory.GetFiles().Count(extensionCondition);
                foreach (var directorio in directory.GetDirectories())
                    total += ContarFicheros(directorio, extension, extensionCondition);
                return total;
            }
        }


Recibe como parámetro el DirectoryInfo, la extensión y el delegate. El método tiene un enfoque recursivo, utilizando como caso de parada la condición de que un directorio no tenga más subdirectorios. En este caso solamente cuenta los ficheros en este directorio.
En caso contrario, cuenta los ficheros y llama recursivo por cada subdirectorio.

Para obtener los directorios utilizamos el método GetDirectories() dentro de la clase DirectoryInfo el cual devuelve un DirectoryInfo[] con todos los subdirectorios dentro del directorio actual. Y para contar los ficheros utilizamos el método de extensión Count() del método GetFiles() contenido en la clase DirectoryInfo. El método GetFiles() devuelve un FileInfo[] que representa todos los ficheros en el directorio actual. Y con el método Count() los contamos, utilizando una sobrecarga donde se le pasa un delegate

Código (csharp) [Seleccionar]
Func<FileInfo, bool>

El cual representa la condición que tienen que cumplir los ficheros para contarlos.

Nota: En vez de definir el delegate con un método anónimo como lo hice en el código, se puede también definir utilizando expresiones Lambda (aunque esto ya es otro tema)

Código (csharp) [Seleccionar]
Func<FileInfo, bool> extensionCondition = s => s.Extension == extension; ;

Espero que este código sea útil y se entienda.




22 - Saber si una cadena tiene paréntesis balanceados

El objetivo del siguiente código es saber si una cadena esta balanceada en cuanto a los paréntesis. Dígase paréntesis a (), [], {}. El objetivo es saber si están correctamente puestos.

Para esto utilizaremos una Pila de caracteres. (Stack<char>). Una pila es una estructura de datos en la que el modo en el que se accede a sus elementos es de tipo LIFO (Last In First Out - último en entrar, primero en salir). Utilizaremos el método Push() que se utiliza para empilar (meter) un elemento en la pila, el método Pop() para desempilar (quitar) el elemento en el tope de la pila y devolverlo, también el método Peek() que devuelve el último elemento en la pila, pero no lo desempila. Por último la propiedad Count que nos da que cantidad de elementos hay en la pila.

El objetivo es ir recorriendo la cadena y a medida que encontramos un paréntesis abierto meterlo en la  pila, en caso de que no sea un paréntesis abierto comprobar si es cerrado, y ver si la pila tiene elementos y en el tope de la pila está el paréntesis correspondiente abierto entonces sacarlo de la pila y seguir recorriendo la cadena. En caso de que el elemento no sea un paréntesis entonces ignorar y seguir recorriendo. Al final, el método devuelve true si la pila está vacía, false en caso contrario pues hubo algún paréntesis que no tenía su correspondiente paréntesis cerrado

Código (csharp) [Seleccionar]
static bool ParentesisBalanceados(string cadena)
        {
            Stack<char> pila = new Stack<char>();
            for (int i = 0; i < cadena.Length; i++)
            {
                if (cadena[i] == '(')
                    pila.Push('(');
                else if (cadena[i] == '{')
                    pila.Push('{');
                else if (cadena[i] == '[')
                    pila.Push('[');
                else
                {
                    if (cadena[i] == ')')
                        if (pila.Count != 0 && pila.Peek() == '(')
                            pila.Pop();
                        else return false;
                    else if (cadena[i] == '}')
                        if (pila.Count != 0 && pila.Peek() == '{')
                            pila.Pop();
                        else return false;
                    else if (cadena[i] == ']')
                        if (pila.Count != 0 && pila.Peek() == '[')
                            pila.Pop();
                        else return false;
                }
            }
            return pila.Count == 0;
        }


Ejemplo de uso:

Código (csharp) [Seleccionar]
Console.WriteLine(ParentesisBalanceados("ab(xa[y*c](..[.]+++){{}}cc)*"")); //Devuelve true
Console.WriteLine(ParentesisBalanceados("ab(xa[y*c)bb]**")); //Devuelve false
Console.WriteLine(ParentesisBalanceados("a(b))(")); //Devuelve false


Nota: También se podría haber hecho utilizando un Swtich

Código (csharp) [Seleccionar]
static bool ParentesisBalanceadosSwitch(string cadena)
        {
            Stack<char> pila = new Stack<char>();
            for (int i = 0; i < cadena.Length; i++)
            {
                switch (cadena[i])
                {
                    case '(':
                        pila.Push('(');
                        break;
                    case '{':
                        pila.Push('{');
                        break;
                     case '[':
                        pila.Push('[');
                        break;

                     case ')':
                        if (pila.Count != 0 && pila.Peek() == '(')
                            pila.Pop();
                        else return false;
                        break;
                    case '}':
                         if (pila.Count != 0 && pila.Peek() == '{')
                            pila.Pop();
                        else return false;
                        break;
                     case ']':
                        if (pila.Count != 0 && pila.Peek() == '[')
                            pila.Pop();
                        break;
                    default:
                        break;
                }
            }
            return pila.Count == 0;
        }





En cuanto pueda sigo haciendo!
Salu2s
#484
Hola, Cuando dices "le hice mantenimiento" a que te refieres?

Si el único cambio que hiciste fue agregarle la memoria ram, intenta encenderla sin esa RAM nueva. Tambien limpia los zócalos de la RAM y los contactos de estas.

Dinos como te fue!

Salu2s
#485
Programación C/C++ / Re: Duda
25 Mayo 2015, 02:36 AM
Hola! al final no estoy seguro si cambiaste a manejar la "cadena" como un string, pero voy a responder tu pregunta original.

Puedes usar el siguiente método para ver que cantidad de dígitos tiene un número.

Código (cpp) [Seleccionar]
int cantDigitos(unsigned long long int number)
{
int cont = 1;
if (number / 10 == 0)
return 1; //Si el número entre 10 es 0, entonces tiene un dígito
       //Se realiza la misma operación mientras incrementas el contador
while (number / 10 > 0)
{
cont++;
number = number / 10;
}
return cont;
}


Ej: Para una entrada

Código (cpp) [Seleccionar]
unsigned long long int var = 12345678123456789;

Obtienes:

Citar17

Espero, esto te ayude.

Salu2s
#486
Programación C/C++ / Re: Duda
24 Mayo 2015, 08:47 AM
Cita de: SojatDotar en 24 Mayo 2015, 03:54 AM
Buenas, como verifico que un número tenga 16 digitos? solo utilizando if, else o swicth

1- El nombre de tu tema no brinda ninguna información con respecto a lo que quieres preguntar. Deberías leerte las reglas del foro.

2 - No se resuelven ejercicios. Si esa es tu duda, sería bueno que plantearas que has hecho o pensado y desde allí te podríamos ayudar.

3 - No especificas en que lenguaje estás trabajando (C o C++)

Ahora, en que tipo de dato te entran el número?
#487
.NET (C#, VB.NET, ASP) / Re: Partir archivo
24 Mayo 2015, 02:33 AM
Estuve pensando sobre lo que quieres hacer y me vino a la mente trabajar con unos FileStream y funciona, lo que pasa que a la hora de crear los buffers (byte[]) tienes que tener bien en cuenta el tamaño que le vas a dar para que tengan el tamaño exacto a la hora de unirlos. Para que no te queden corruptos, tienes que tener en cuenta bien la longitud de los ficheros que creas nuevos. Fijándote bien si la longitud del archivo es par o impar, para saber como controlar eso a la hora de picar el archivo. La clase FileStream tiene un método .Read() con el cual puedes leer (y guardar en un buffer (byte[]) desde una posición dada (offset) una cantidad de bytes determinados.

No se si esta sea la mejor manera de hacerlo, pero es una.

Puedes ir trabajando por ahi, me gustaría poder tirar el código ahora y ayudarte más pero ahora mismo estoy con poco tiempo, pero más tarde si tengo la oportunidad te ayudo un poco más.

Salu2s




Añado:

Como te había comentado, estuve viendo una forma de hacerlo, que quizás no sea la mejor, pero me funciono bien. (No siempre la primera vez es la mejor forma de hacerlo) Ahora solo te queda ver si esto te sirve o puedes/quieres hacerle modificaciones:

Código (csharp) [Seleccionar]
static void SplitFiles(string file)
       {
           FileStream loadedFile = new FileStream(file, FileMode.Open);

           //Aquí calculamos la primera mitad del archivo analizando si es par o impar la longitud completa.
           //En caso de que sea par le añadimos 1 y sino le añadimos 0 (lo dejamos como va)
           long firstHalfLength = (loadedFile.Length / 2) + ((loadedFile.Length % 2 != 0) ? 1 : 0);
           long secondHalfLength = loadedFile.Length / 2;

           //Creamos los bufferes con el tamaño calculado
           byte[] firstHalf = new byte[firstHalfLength];
           byte[] secondHalf = new byte[secondHalfLength];

           //Léemos los bytes del FileStream y los pasamos a los bufferes
           loadedFile.Read(firstHalf, 0, firstHalf.Length); //Lees la primera mitad
           loadedFile.Read(secondHalf, 0, secondHalf.Length); //Lees la segunda mitad

           loadedFile.Close();

           //Creamos los FileStream para los nuevos ficheros y escribimos los bytes en los mismos
           FileStream firstFile = new FileStream("fichero1.part1", FileMode.Create);
           firstFile.Write(firstHalf, 0, firstHalf.Length);

           firstFile.Close();

           FileStream secondFile = new FileStream("fichero1.part2", FileMode.Create);
           secondFile.Write(secondHalf, 0, secondHalf.Length);

           secondFile.Close();
       }

       static void JoinFiles(string file1 , string file2)
       {
           //Abrimos los FileStream de los archivos
           FileStream fileStream1 = new FileStream(file1, FileMode.Open);
           FileStream fileStream2 = new FileStream(file2, FileMode.Open);

           //Creamos el buffer para los bytes
           byte[] joinedFiles = new byte[fileStream1.Length + fileStream2.Length];

           //Leemos la primera mitad del archivo y la guardamos en el buffer nuevo
           fileStream1.Read(joinedFiles, 0, (int)fileStream1.Length);
           //Leemos la segunda mitad del archivo
           fileStream2.Read(joinedFiles, (int)(fileStream1.Length), (int)fileStream2.Length);

           fileStream1.Close();
           fileStream2.Close();

           //Escribimos el contenido del buffer en el nuevo fichero
           FileStream joinedFileStream = new FileStream("output.jpg", FileMode.Create);
           joinedFileStream.Write(joinedFiles, 0, joinedFiles.Length);
           joinedFileStream.Close();  
       }


Lo hice haciendo dos métodos, uno para picarlo y otro para unirlos. Puedes mejorarlo para que al unirlo puedas identificar que archivos tiene que unir automáticamente al pasarle el nombre del primer archivo.

Una manera de llamarlo sería:

Código (csharp) [Seleccionar]
SplitFiles("file.jpg");
JoinFiles("fichero1.part1", "fichero1.Part2");





Añado: Veo que publicaste otro tema sobre lo mismo con algún código. Bueno, cualquier otra duda ya sabes. Pregunta

Salu2s
Veo que publicaste
#488
Te recomiendo que le heches un vistaso a MonoDevelop, es un IDE libre diseñado primordialmente para C# y otros lenguajes de .NET. Es multiplataforma, por lo que puedes utilizarlo tanto en Windows, Linux o MacOS.

Espero que esto sea lo que estás buscando.

Salu2s
#489
Cita de: jackyX^ en 23 Mayo 2015, 22:16 PM
Me voy a arriesgar a poner windows en el (D) y no toca nada del (C) ya que no tengo dinero como para comprar memorias externas y es muy pesada la musica y fotos que tengo :/ espero no se borre nada o no arruine mi PC

gracias por la ayuda igualmente.

A la hora de instalar, siempre REVISA bien en que disco estas formateando, comprueba dos veces, ten en cuenta el tamaño de la partición para que no vayas a formatear la partición equivocada.

Todo debe salir bien

Salu2s
#490
Cita de: jackyX^ en 23 Mayo 2015, 21:35 PM
Perdon por no dar mucha informacion soy muy novata en esto ya les mencione!

TENGO windows xp!

TENGO 2 discos; el disco local C y el disco local D

En el disco local D tengo el windows, porque ahi esta la carpeta WINDOWS,
ARCHIVOS DE PROGRAMA, ETC.

En el disco local C tengo FOTOS, MUSICA, JUEGOS, INSTALADORES, ETC.

LA PREGUNTA ES: Si yo formateo el disco (D) donde esta el WINDOWS y INSTALO windows 7 ahi, afecta en algo mis fotos, musica y archivos del disco (C) ???

Si formateas el disco D, que según tú, es donde tienes instalado Windows XP, e instalas el Windows 7, no deberías perder los datos en C.

Como bien te dicen, lo normal es que el sitema esté instalado en el disco C, no obstante no tiene nada que ver, una vez me paso lo mismo con Windows XP, cuando lo instalé, el me cambio las letras asignadas de las particiones, D se convirtió en mi disco del sistema y C en los datos.

Ahora, mi recomendación sería que guardaras toda la información personal (FOTOS, MUSICA, JUEGOS, INSTALADORES, ETC) en algun dispositivo de almacenamiento externo, para evitar la pérdida de datos.

Salu2s. Nos dices como te fue!

PD: Si guardas la información en un dispositivo de almacenamiento externo, podrías hacer que tu sistema estuviera en C nuevamente, porque mientras tenga sistema no te va a dejar cambiarle la letra asignada a esa unidad