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ú

Temas - Saberuneko

#46
Necesito un programa para convertir dos ficheros de texto de formato ANSI o UTF-8 a UTF-16 LE para que me los pueda interpretar un programa.

¿Alguna sugerencia? Los convertidores en línea no me funcionan, me devuelven archivos en blanco.
#47
Cita de: Saberuneko en 15 Diciembre 2012, 16:17 PMEs la gráfica.

Buenas.

De nuevo, mi máquina me está dando quebraderos de cabeza.
En esta ocasión, el ventilador de fuente no se comporta como debería...

Normalmente, este gira a una velocidad constante, que nunca varía.
Pero en algunas ocasiones, al arrancar la máquina, este comienza girando a gran velocidad y luego empieza a fluctuar de una manera aparentemente aleatoria.

A parte de que esto hace que el ventilador comience a vibrar debido a los bruscos acelerones y parones, generando un ruido aleatoriamente insoportable y de que esto pueda desestabilizar la expulsión del aire caliente de la máquina, no sé qué puede estar indicando ni qué daños podría causar.

Normalmente, unos cuantos apagados brutos (mantener el botón de apagado) hacen desaparecer el problema, pero no me parece una solución.

¿Qué podría estar causando esto? ¿Alguna posible solución? ¿Cambio la fuente?
#48
Hardware / Comportamiento extraño + Se apaga
14 Agosto 2012, 04:44 AM
Mi ordenador, raras veces, se apaga solo, sin pantallazos ni errores, es repentino, en seco.

Al volverlo a iniciar, se queda colgado completamente, no carga los iconos del escritorio, y si intentas abrir algo se congela a los 20 segundos.

Si lo apago durante un rato corto y lo vuelvo a encender, funciona normalmente.

Lo primero que pensé fue las temperaturas, ya que tiene 2 años y sólo lo limpié una vez.

Lo abrí, lo limpié y las temperaturas, que alcanzaban 60ºC, ahora no pasan de 50ºC, y normalmente suelen estar entre 38~45.

Ya que las temperaturas están a niveles normales, deduzco que puede haber algo tocado dentro... ¿Por dónde debería de empezar a mirar?

Mi problema es que el fallo es muy esporádico y no puedo hacer pruebas seguidas.

SO:
Windows 7 SP1 (Versión 6.1.7601)

Hardware:
Placa Base: Medion MS-7366
CPU: Pentium Dual-Core E5400 @ 2.7 GHz
BIOS: American Megatrends A7366MLN.40C -- 04/01/2010
Versión de SMBIOS: 2.5
Gráfica: ATI Radeon HD 4650
HD: ST350041 2AS SCSI Disk Device
Controlador IDE: NVIDIA nForce Serial ATA Controller
Tarjeta de Red: NVIDIA nForce
Memoria: DIMM, SDRAM de 2048 MB (x2)
#49
Hola, resulta que llevo ya bastante tiempo jugando con los mismos juegos, tengo unos gustos un tanto, peculiares, y tengo temporadas por géneros, o más bien ambientación.

Ahora mismo, estoy con los géneros RTS y Estrategia por Turnos. Ambientados en el espacio.

He desempolvado mis copias de Master of Orion 1 y 2, también he jugado a Starknights, Conquest Frontier Wars, Off-World Resource Base, Homeworld, Star Ruler...

¿Alguien me puede recomendar algún juego que sea del mismo estilo que Starnights o Master of Orion?
Preferentemente algo por turnos, llevo bastante rato con RTS.

Sins of a Solar Empire, no es una opción. No me gustó cuando lo probé.
Lo mismo con Imperium Galactica 2. Y nada de browser, estilo OGame.
Quiero jugar en local.

Dejo algún screenshot para dar ideas de la pinta que tienen:

Starknights:
http://t0.gstatic.com/images?q=tbn:ANd9GcSzQ_bKbHs_3DZ74GVLMgEyfi7hCmR1-33DXy_zmw6G5DRQIy1_4hJfW9ck7Q
http://www.mmorpggratis.com/pics/foto_starknights.jpg

Master of Orion:
http://www.shamusyoung.com/twentysidedtale/images/moo2_galaxy.jpg
http://androidarts.com/spaceconquest/screenshots/combat.png

CFW:
http://desmond.imageshack.us/Himg197/scaled.php?server=197&filename=54690full.jpg&res=landing

ORB:
http://www.saleonsoftware.com/images/detailed/ORB1.jpg

Homeworld:
http://www.zonatotal.net/wp-content/plugins/RSSPoster_PRO/cache/d8b26_Foto%2BHomeworld%2B2.jpg

Star Ruler:
http://media.desura.com/images/games/1/13/12311/ScreenShot0098.PNG

???:
Link
#50
Capítulo 0 - Introducción:

Antes de empezar, aclaro que este texto está orientado al nivel más básico posible intentando evitar los tecnicismos todo lo posible para que la comprensión sea más sencilla. Cualquier usuario de nivel medio o avanzado no encontrará esto de gran utilidad, la verdad.

Los incidentes que veo de "me han robado la cuenta de 'x'", o, "tengo un bicho en mi máquina", suelen estar causados en la mayoría de casos por no poner en práctica pequeños "trucos" o "consejos" de seguridad básicos. Y siguen apareciendo en un flujo constante...

Esto me ha animado a hacer un breve tutorial sobre "seguridad" orientado hacia aquellas personas que apenas tienen conocimientos sobre informática, mostrando las vulnerabilidades más comunes explotadas para dichos "ataques" contra sus máquinas o cuentas en línea.

Con este tutorial, voy a intentar mostrar a estos usuarios, que tener una máquina segura suele consistir más en el mantenimiento de un "buen comienzo", más que en parchear agujeros cuando empieza a haber problemas.

Sin más preámbulos, paso a lo importante.

Capítulo 1 - El SO (Sistema Operativo):

La elección del SO, es un factor muy importante a la hora de enfocar cómo vas a administrar y configurar la seguridad de tu máquina, pero no sólo depende de eso... en algunos casos, puede ser el SO en sí el que te está "traicionando", sin que te des cuenta.

En esta ocasión, el enfoque va a ir centrado en Windows, el sistema operativo más común entre los usuarios estándar, ya que suele ser el que viene preinstalado en la mayoría de las máquinas de marca que se compran en las tiendas.

Antes de comenzar, formularé una pregunta:
¿Qué importancia tiene que el SO sea original o pirata?
En primera instancia, esto puede parecer irrelevante, el SO es ese software (o más bien, conjunto de software), que actúa como interfaz entre el usuario y la máquina, simplificando la interacción entre ambos.

Ahora bien, ya que esa simplificación también nos "oculta" todo ese complejo detalle de cómo está funcionando la máquina...
¿Cómo nos aseguramos de que nuestro problema de seguridad no proviene inicialmente de una vulnerabilidad en esta parte?

La respuesta es simple, hay varios factores que cualquier usuario debería tener en cuenta para asegurarse de que su SO es seguro, y se pueden cubrir respondiendo a unas simples preguntas:

¿Es tu SO original, o pirata?
Un SO, no deja de ser un tipo de software, como bien es sabido, todo software pirata, puede venirnos con indeseados "bichos", también denominados "virus informáticos", que comprometen la seguridad de nuestro sistema.

Ya que el SO es algo que se suele vigilar menos, por lo que alguna gente tiende a olvidar que no deja de ser software, así que si es pirata, si, también puede venirnos con esos "bichos", que normalmente han sido convenientemente acomodados por la persona que distribuyó dicha copia pirata o SO modificado. ¡Y lo estamos ignorando!

Es cierto que las copias originales de Windows son muy caras. Pero si por algún método podéis haceros con un disco de instalación original y luego encontraros una clave, podréis sentiros más seguros que bajando una copia pirata.

En caso de que queramos un sistema confiable que no nos cueste dinero, ¡siempre hay otras opciones!

Cierto es que si se va a usar la máquina para jugar, Windows suele resultar ser el SO más atractivo, ya que la mayoría de los juegos del mercado tiran de sus famosas librerías DirectX y esas cosas, aún así, siempre hay formas de solucionar estos problemas con un poco de paciencia.

Si no es tu caso, y vas a usar la máquina exclusivamente para estudiar, trabajar, realizar diseño gráfico o en 3D o cualquier otro tipo de tareas misceláneas, entonces aconsejo buscar más información sobre las distintas distribuciones del famoso SO llamado Linux, hay muchas entre las que escoger, cada una adaptada a distintos tipos de usuarios y sus necesidades. ¡Te animo a probar!

Lo importante en todo caso, es contrastar fuentes y asegurarse de que estamos obteniendo nuestro instalador desde una fuente fiable (normalmente la original). De poco nos valdrá que dejemos Windows de lado, si nos vamos a bajar cualquier otro SO alternativo desde un sitio no fiable.

Una vez cubierta esa cuestión, pasamos al siguiente punto:

¿Está tu SO actualizado?
Volviendo a Windows, algunos notaréis que hay unas actualizaciones periódicas del sistema, las cuales normalmente no sabemos para qué sirven y que incluso pueden llegar a parecernos poco importantes...

Lo importante sobre estas mismas, es que entre ellas, se incluyen actualizaciones de seguridad que solucionan muy diversos problemas de programación o diseño en el SO, eliminando vulnerabilidades conocidas de tu sistema.

Es cierto que la forma en la que estas actualizaciones se presentan suele ser bastante incómoda, saliendo una ventana cada cierto tiempo preguntando si se quiere reiniciar el sistema.

La solución, es reconfigurar la forma en la que estas actualizaciones se solicitan, pero NUNCA deshabilitarlas. Probad otra configuración, como podría ser:

-"Descargar actualizaciones por mí, pero permitirme elegir cuándo instalarlas".
Esta es mi favorita, las actualizaciones se descargarán sin molestarte, y se instalarán cuando apagues el sistema, de esta forma, no te saldrán mensajes de reinicio cada poco.

-"Notificarme, pero no descargarlas automáticamente ni instalarlas".
En caso de que queráis ahorrar ancho de banda o velocidad de proceso, podéis escoger esta otra. Lo que hace esta opción, es notificarte cuando hay actualizaciones, para que las instales cuando a tí más te convenga.

Recuerda: Un OS actualizado, es un OS sano.

En el siguiente apartado, hablaremos de forma general sobre la instalación de herramientas útiles para la limpieza del sistema, tanto a nivel de malware (virus), como de eficiencia.

Capítulo 2 - Preparando nuestro Sistema:

Ahora que ya hemos hecho lo mínimo por nuestra seguridad, intentando que nuestros "cimientos" sean más o menos estables, llega la hora de preparar nuestro sistema, preferiblemente antes de usarlo para cualquier cosa, sería una pena ponernos en riesgo antes de estar preparados, ¿verdad?

¿Qué necesitamos?

Lo primero que necesitaremos, será instalar las aplicaciones que necesitaremos para monitorizar y mantener la "salud" de nuestra máquina. Vamos a repasar que es lo que deberíamos tener como mínimo en nuestra "caja de herramientas":

- Un AV (Anti-Virus)
- Un FW (Firewall/Cortafuegos)
- Herramientas de limpieza y optimización
- Utilizades de análisis.

Esto sería lo más esencial, os habréis fijado que detallo que sólo debería haber un AV y un Cortafuegos...

No lo detallo por capricho, y es que tiene su razón de ser:

No es la primera vez que me encuentro un equipo con varios AV o cortafuegos instalados a la vez, ya que algunos usuarios sienten que así su nivel de protección es mayor.

Desgraciadamente, esto no es cierto. El tener instalado más de un AV o FW al mismo tiempo, hará que ambos entren en conflicto, ralentizando la máquina y, en numerosas ocasiones, impidiendo que cumplan su objetivo correctamente.

¿Cuál escoger? ¿De dónde lo obtengo?

Así que lo que debemos hacer, es analizar los posibles AV y FW que podemos instalar en nuestra máquina, y escoger el que mejor nos parezca según nuestros criterios.

En caso de que seas un usuario "de a pie", entiendo tu posición actual perfectamente, estarás preguntándote, "¿Y qué criterios sigo si no sé sobre seguridad?". Esta duda es normal y más que razonable. Si estás en este caso, lo que te aconsejo es informarte un poco, ya sea en la red, con revistas, o consultando a una persona que sepa, sobre qué software sería el que más te conviene.

Al igual que el OS, es muy importante comprobar que lo estamos obteniendo de una fuente fiable. Si no quieres pagar un AV o FW, siempre hay opciones gratuítas. Recuerda, siempre será mejor un AV gratuito un poco menos potente, pero limpio, que un AV pirateado que puede traer indeseables "polizones". ¿No crees?

Por otro lado, si lo vas a descargar de la red, es de crucial importancia que te asegures que te lo bajas del sitio oficial, y que estés seguro de que es fiable. Recuerda, sólo con fuentes fiables podrás estar seguro de tu seguridad, valga la redundancia.

Ya tengo mi AV y FW instalado ¿Y ahora qué?
Bien, ahora es cuando te recuerdo, de que día a día, van apareciendo nuevos virus informáticos y vulnerabilidades, por lo que los AV y FW ¡no son una excepción a la hora de las actualizaciones!

Actualiza tu software de seguridad con regularidad.

Por otro lado, programa o recuerda hacer un escaneo periódico con el AV de todo tu sistema (siempre después de haberlo actualizado), esto asegurará (periódicamente) si tu máquina sigue limpia. Una vez a la a semana suele ir bien. Normalmente, los AV eliminan las amenazas automáticamente, así que no debería resultarte difícil mantener tu máquina limpia bajo condiciones normales.

¿Qué programas de limpieza uso?
Aquí hay mucha variedad, y depende sobre todo de tus necesidades, personalmente, yo aconsejo tener siempre a mano una herramienta de limpieza, que repara problemas del registro, libera espacio y mantiene el rendimiento de la máquina. Lo importante sobre este punto, es que también te asegures que estos programas son fiables y que los uses con regularidad para mantener tu PC siempre a punto.

Como este texto trata de ser lo más general posible, no voy a recomendar ninguna aplicación en particular, pero sí que te recuerdo, que por el foro podrás encontrar mucha información sobre distintas herramientas de limpieza.

¿Y las utilidades de análisis?
En este caso, te aconsejo que tengas siempre a mano la versión más reciente de HiJackthis, esta aplicación es muy útil para ver qué es lo que puede estar fallando en una máquina, a la hora de preguntar una duda o intentar solucionar un problema sobre seguridad, muéstranos los logs que genera esta aplicación, estarás un paso por delante, ya que dispondremos de un análisis para ver cuál puede ser tu problema.

Capítulo 3 - Nuestras cuentas:
Bueno, pues tras toda esta preparación, estoy seguro de que estás ansiando por poder navegar ya por la red, crear o acceder a tus cuentas de email, redes sociales, foros, etc... ¿verdad?

Bien pues, ya que queremos que estas cuentas sean seguras, también vamos a cubrir este apartado.

Es muy importante visualizar nuestras cuentas de la forma adecuada:
Imagina tu cuenta de correo, como si fuese tu buzón de casa, o tu cuenta de red social, como si fuese tu coche. Si lo piensas bien, ambos tienen "llaves".

En el caso de la informática, estas "llaves" son las bien conocidas "contraseñas" o "pass", que tienes que introducir para acceder a tu cuenta. Igual que en la calle hay gente que intentaría robarte el correo o tu coche, ¡también en la red puedes toparte con gente que quiera robarte tus cuentas! Los métodos difieren, pero el objetivo es el mismo.

Vamos a contemplar los distintos aspectos a tener en cuenta:

Lo primero, y más importante, es tu contraseña. Esa palabra mágica, es la llave que da acceso a tu cuenta. Como podrás comprender, si una llave es muy simple, la cerradura también se abrirá muy facilmente, ¿no crees?.

Bien, con la contraseña ocurre lo mismo. Para asegurarte de que nadie consigue adivinar tu contraseña fácilmente, debes asegurarte de tener contraseñas robustas.

¿Qué es una contraseña robusta?
Son aquellas contraseñas que no son fáciles de adivinar, sobre todo por su longitud y nivel de complejidad.

Para componer una contraseña robusta, debemos seguir los siguientes aspectos:
NO DEBES:
- No utilizar sólo palabras o números. Es lo primero que se va a intentar a la hora de intentar forzar la cerradura.
- No utilizar palabras que estén relacionadas contigo. Como es lógico, otra cosa que van a intentar es probar palabras que tengan que ver contigo, tales como el nombre de tu mejor amigo, novia, etcétera... No las uses. Da igual que añadas números a la derecha o izquierda o que la pongas invertida, no funciona, lo van a probar.
- Nada de 1337, ¡45c1b1r l4 p4l4br4 451 n0 func1on4!
DEBERÍAS:
- Asegurarte de que tu contraseña tiene como mínimo 8 caracteres, cuanto más larga mejor.
- Mezcla letras mayúsculas, minúsculas, números y símbolos.

Y RECUERDA:
A pesar de que la contraseña debe ser compleja, ¡asegúrate de que la puedes recordar! si la tienes que apuntar en un papel o te la olvidas, no habrás hecho nada, es como si perdieses las llaves de tu coche por la calle.

¿Y con una contraseña robusta ya está?
Para nada, recuerda que si comprometen tu máquina, podrían sacar tu contraseña de la misma. Así que, al igual que no la anotaríamos en un papel, tampoco, bajo ningún concepto, guardaremos la contraseña en el equipo.

Así que acuérdate de desmarcar todas esas casillas de "recordar mi contraseña" y "inicio de sesión automático".

Por otro lado, ten en cuenta de que si no se las arreglan para conseguir tus contraseñas de este modo, intentarán engañarte para que se la des tu.

Me explico, muchos mails, mensajes y sitios web, tienen "engaños", para que teclees tu contraseña en ellos, enviándosela al atacante. Normalmente a estos engaños llegas con los típicos links (enlaces) de "¡click aquí!". Si nada más pulsar uno de estos, te pide volver a meter tu contraseña, no lo hagas.

Asegúrate siempre de que estás introduciendo la contraseña en el sitio correcto. Un buen truco es comprobar que tu barra del navegador está mostrando la dirección web correcta, nunca teclees tu contraseña si ves que en esa barra salen palabras raras que no tengan nada que ver con el servicio.

Evidentemente, nunca digas tu contraseña a nadie. (Recuerda la comparación, ¿darías las llaves de la puerta de tu casa por ahí?).

Recuerda, nunca te fíes. Igual te intentan engañar con algún truco.

Por último, intenta cambiar tu contraseña con cierta frecuencia, y usar contraseñas distintas para sitios distintos. La razón de esto, es que a veces, cuando introduces tu contraseña en un sitio, los administradores del mismo pueden ver cuál es, en caso de ser así, si tienes la misma en otro servicio y dichos administradores no son buenas personas, pueden utilizarla para acceder a tus otras cuentas.

Capítulo 4 - Descargando
Bien, pues ya tenemos nuestra seguridad instalada, nuestras cuentas aseguradas, ¡y nos apetece ponernos a descargar cosas!

Aquí ya es casi inevitable el riesgo, ya que al descargar contenido pirata, te la estás jugando constantemente a que algún bicho se te cuele en el equipo, usuando el archivo como vehículo.

Mi consejo aquí es que siempre que descargues algo, lo analices con tu Anti-Virus antes de abrirlo. Y si, cuando lo abras, sale alerta de Virus, ¡no dejes a la aplicación seguir ejecutándose!
Aunque conozcas la aplicación, puede que el bicho esté ahí igualmente, no te fíes.

¿Qué hacer ante un falso-positivo?
Un falso-positivo, es cuando tu AV detecta un archivo limpio como infectado, lo que puedes hacer en estos casos normalmente, es contactar con los desarrolladores del mismo e informarles del falso positivo, enviándoles el archivo sospechoso. Eso les ayudará a determinar si el archivo es realmente peligroso o no, sin tener que ponerte tu a comerte el coco con el mismo.

¿Y si no me atienden?
Puedes usar herramientas de análisis online, que lo que hacen es analizar tu archivo con muchos tipos de anti-virus distintos, contrastando los resultados diferentes para que tu puedas juzgar según los mismos.

Ahora mismo pensarás, "Pero, ¿no decías que tener varios AV a la vez es malo?".
En este caso, no. Porque realmente no tienes más AV en tu sistema y el sistema que analiza tu archivo está preparado para que no haya esos conflictos, ya que tu AV es un AV monitor (que asegura tu máquina y la analiza), mientras que los utilizados ahí son AV exclusivamente de análisis.

Capítulo 5 - ¿Qué falta?
Bueno, ya tenemos controlado que los virus no nos vengan de serie en nuestro sistema, AV, FW y demás programas. Tampoco nos vienen de la red. ¿Estamos seguros ya?

Pues la respuesta es no, a tu ordenador no solo entran datos a través de la red, también hay medios extraíbles, como otros HDDs (discos duros), Floppys (discos flexibles), CDs, DVDs, Pendrives (lápices de memoria)...

Lo más aconsejable en estos casos (excepto HDD), es que deshabilites el "autorun".

¿Qué es el autorun?
Autorun, es un proceso que se inicia nada más introduces el nuevo medio, por ejemplo, cuando metes un CD o DVD en el lector, se abrirá para ver su contenido sin que tengas que hacer prácticamente nada, y si enchufas un lápiz, puede que también haga algo.

El caso es, que si alguno de estos medios están infectados, es posible que nada más lo enchufes, intente auto-instalar ese bicho que trae. Así que estarás más seguro si lo deshabilitas para que lo puedas inciar tu después de comprobar si es seguro.

¿Cómo lo deshabilito?
Eso depende del SO, busca en este foro cómo hacerlo, ya que hay diversos tutoriales y mucha información sobre estas cosas.

Bien, he deshabilitado autorun, y conecté algo nuevo ¿Qué hago ahora?
¿Recuerdas lo que hacías cuando descargabas un archivo nuevo? Pues lo mismo. Haz que tu AV analice ese medio antes de abrirlo. Si te dice que es seguro, ya puedes abrirlo con un poco más de confianza.

¿Algún tipo de mantenimiento a realizar de forma periódica?
¡Si! te aconsejo que hagas una copia de seguridad de tus archivos importantes cada cierto tiempo, y que, si puedes, formatees tus discos y reinstales tu SO cada varios meses, así te aseguras de estar siempre trabajando con una máquina relativamente fresca, manteniendo tus datos a salvo por si las moscas.

Capítulo 6 - Conclusión:
Bueno, con esto, ya he comentado todo lo que he podido recordar y redactar sobre seguridad básica en dos horas, lo que te aconsejo ahora, es que si quieres estar más seguro, intentes leer documentación un poco más avanzada, que podrás encontrar en este foro. Y recuerda, ¡el saber no ocupa lugar!

Espero que este texto os haya sido de ayuda. Si tienes cualquier duda, pregunta en el foro, preferiblemente abriendo un tema nuevo, para que sea más fácil de ver.

Recuerda haberte leído las normas primero, y revisado los FAQ (Frequently Asked Questions / Preguntas Frecuentes), además de probar con el buscador.

Un Saludo, y miauchísimas gracias por pararte a leerme. :3
#51
Buenas, vuelvo de nuevo con más dudas.

En esta ocasión estoy tratando de mostrar una cadena, letra a letra, de momento, el siguiente code me funciona correctamente:

Código (cpp) [Seleccionar]
//For WIN systems, use the header windows.h
//For NIX systems, use the header unistd.h

#include <iostream.h>
#include <string.h>
#include <windows.h>

using namespace std;

int main()
{
string str1 = "This is only a test";
int count;
int limit;

limit = str1.length() - 1;
for (count = 0; count <= limit; count++)
{
cout << str1.at(count);
Sleep(50);
}
}


Ahora bien, tengo dos dudas:

1.- El compilador (Dev-C++) me muestra esta advertencia:
Citar32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

La cual me lleva a deducir que la cabecera que estoy utilizando (windows.h o unistd.h, dependiendo del sistema) puede no ser la más apropiada. ¿Alguien podría decirme si DevC++ incluye alguna con una función igual a Sleep()?

Si vale de forma universal, independientemente del OS, sería incluso mejor que las que uso actualmente, que son dependientes del OS.

2.- He intentado hacer que este pequeño programita reciba dos parámetros, un int (con el tiempo en milisegundos entre letra y letra), y la cadena a mostrar.

Tras unos intentos lo he dejado tal que así:

Código (cpp) [Seleccionar]
#include <iostream.h>
#include <string.h>
#include <windows.h>

using namespace std;

int main(int interval=50, string str1)
{
// string str1 = "This is only a test";
int count;
int limit;

limit = str1.length() - 1;
for (count = 0; count <= limit; count++)
{
cout << str1.at(count);
Sleep(interval);
}
}


Pero no me funciona...

Extrañamente, si introduzco un cout para mostrarme los valores de los parámetros introducidos (interval y str1)...

Código (cpp) [Seleccionar]
cout << interval;
cout << str1;


Devuelve lo siguiente, dependiendo de la entrada:

interval:
1 : si no introduzco parámetro
2 : si introduzco parámetro (cualquiera)
str1:
1.4013e-045: si no introduzco parámetro
2.8026e-045: si introduzco parámetro (cualquiera)

Los cuales, evidentemente no son los valores que deberían de entrar.

¿En qué puedo estar fallando esta vez?

Un Saludo, y miauchísimas gracias por adelantado.
#52
Foro Libre / XWolf pide disculpas por Mail.
30 Mayo 2012, 12:01 PM
Respecto a esto:

http://foro.elhacker.net/dudas_generales/manga_de_freaks_de-t363013.0.html

Le mandé un mail, ofreciendo echarle una mano sólo en recuperar su PC, no en el otro tema...
Interesantemente, me ha respondido esto:

Lo posteo bajo su petición.
Citarme gustaria si puedes que pegues este mail en alguna sección...
Me parece una disculpa, "a su manera", pero una disculpa después de todo.

CitarBueno...
Neko...
Sorry tio pero estaba muy encabronado sabes....
Ahi me di de baja y hoy veo que ni siqueira estan al tanto de mi posteo...
El dia de ante ayer hice un post en DUDAS GENERALES .... por cosa de no postear en cualquier lugar y me corran mi topic...
EL primer post fue sobre el bt5 .... ok ... fue... ya me pude conectar con mas de un vecino y ya fue ese problema
ESE NO ES PROBLEMA....

EL problema fue el segundo post....
Donde les cuento la historia de una persona que es soberbia y totalmente arrogante que esta haciendo fortunas con internet HACIENO NO SE QUE CON EL TRAFICO... entonces google le manda todas las semanas como 50.000 U$S....

El tema es que esta persona tiene leves conocimientos... y nadie le cree que "LA HAYA PEGADO" ...
El tipo es un CEO . Y lo que me revienta... es que de verdad.. uds no lo conocen pero es una persona mala , con un padre mafioso maton....
Y es jodido el tipo ... y lo que odio es que el otro dia vino a cenar a mi casa por un tema en particular y el comenta su "exito" con todo orgulllo y yo se que , por escuchas de un pasillo , el tipo no se que hace con el trafico de internet.... se lo redirecciona  su pagina y google le paga por eso...
Es un tipo astuto sabes?? junto a el ltrabajan personas a nivel internacional... TODOS BIEN PAGOS como se vera....

SAludos NEko...
el post se llamaba "MILLONARIO O ..." (el resto no me lo acuerdo , pero arrancaba con millonario y algo mas...y estaba en dudas generales ) y me re encabrono que uds... elites.... que les tengo un gran respeto (porque a fin de cuentas amo mi pc tambien y el under y el mundo del hacking es apasionante , lastima que tengo que estudiar demasiado y la programacion me cuesta ostias...) PERO ME JODIO QUE NADIE ME ALLA AYUDADO MAS CUANDO SE SUPONE QUE REPITEN LA PALABRA ETICA ....

AL ver que nadie me tiro un hilo... pense por dentro... "eticamente estos son una manga de piratas de parche negro NEGRO que si no apoyan mi peticion... entonces apoyan al otro" (yo veo las cosas asi, si no estas de un lado , estas del otro. NO hay medios . NO hay grisis . no para mi)

asi que sinceramente te pido disculpas si te molesto y agradezco muchisimo que me hayas escrito...

es muy feo cuando uno , esclavo del sistema , se rompe el culo en lavida... para que venga otro... mueva unos hilos y se haga millonario y encima te lo refriegue en la cara saliendose con la suya...

yo unicamente quiero callar la farsa de este hijo de p**a....

saludos...

y mis mas sinceros respetos y disculpas.... (me gustaria si puedes que pegues este mail en alguna sección...) tengo miedo de entrar al foro , que me fichen la ip y me hagan algun daño....

saludos comunidad...
saludos neko
#53
Hola, llevaba un tiempo ya trasteando con C, y ya tengo cierto nivel, no me defiendo mal, así que decidí comenzar hoy con C++, mi primer experimento, ha sido ponerme a trastear con las funciones de strings, algo nuevo para mí, ya que en C esto se maneja con arrays de caracteres.

El comienzo no ha estado mal, pero me he atascado un poquito:
Este es mi código completo:

Código (cpp) [Seleccionar]
//"Toying around with strings and vars"

#include <iostream>
#include <string>
using namespace std;

int main()
{
//declaring strings and vars
string str1, str2, str3;
char testchar1;
int count, pos;

//setting initial strings
str1 = "This is a test String";
str2 = "One";

//playing with size instructions
cout << "Size: " << str1.size() << endl;
cout << "Capacity: " << str1.capacity() << " (Before reserve)" << endl;
str1.reserve(64);
str2.reserve(64);
cout << "Capacity: " << str1.capacity() << " (After reserve)" << endl;

//Toying with 'at' instruction
cout << "Chars per position:" << endl;
cout << "--" << endl;
for (size_t count=0; count < str1.length(); count++)
{
cout << "[" << count << "] -> " << str1.at(count) << endl;
}

cout << "\n";

//Testing append instruction
cout << "str1 contains: " << str1 << endl;
cout << "str2 contains: " << str2 << endl;
str2.append(4,'-');
str2.append("Two");
cout << "Now, str2: " << str2 << endl;

//Swapping the content of str1 and str2
str1.swap (str2);
cout << "After a swap: \n";
cout << "str1 contains: " << str1 << endl;
cout << "str2 contains: " << str2 << endl;

//Experimenting with find and substr
pos = str1.find("String");
str3 = str1.substr (pos);

cout << "I found the word: " << str3 << endl;
cout << "It starts at position: " << pos << endl;

//Trying out string comparison:
//int compare ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 )
if (str3.compare(0,6,str2,14,6))
cout << "Found " << str3 << " into " << str1 << endl;

if (str1.compare(0,3,str3,0,6))
cout << "Weird... I found " << str2 << " into " << str3 << "!\n";
else
cout << "Didn't find " << str2 << " into " << str3 << endl;

return 0;
}


La ejecución ha ido bien hasta un punto cercano al final, aquí muestro el retorno en consola:

Size: 21
Capacity: 21 (Before reserve)
Capacity: 64 (After reserve)
Chars per position:
--
[0] -> T
[1] -> h
[2] -> i
[3] -> s
[4] ->
[5] -> i
[6] -> s
[7] ->
[8] -> a
[9] ->
[10] -> t
[11] -> e
[12] -> s
[13] -> t
[14] ->
[15] -> S
[16] -> t
[17] -> r
[18] -> i
[19] -> n
[20] -> g

str1 contains: This is a test String
str2 contains: One
Now, str2: One----Two
After a swap:
str1 contains: One----Two
str2 contains: This is a test String

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


Viendo dónde se ha quedado clavado, el problema parece estar en alguna parte del código después del comentario:
//Experimenting with find and substr

Mi compilador (Dev-C++) ya no me da errores, así que no se me ocurre qué puedo haber hecho mal...

¿Me echáis una mano? Lo estoy pasando muy bien trasteando, y tengo curiosidad por saber en qué fallé, y si hay alguna manera algo mejor de usar alguna de las instrucciones que me han funcionado aquí.

Un Saludo, y miauchísimas gracias por adelantado. :3
#54
Hola, acabo de ver este tema y me acordé de una cosa...
http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/quiero_borrar_esta_cuenta-t359346.0.html
Hace como 3 años o así, le había dado a esta opción, no me acuerdo con qué razones... la cosa es que no quiero que mi cuenta sea borrada y me gustaría evitar accidentes posibles por haber pulsado la opción en su momento...

¿Tiene alguna consecuencia haberle dado a la opción en aquel momento? ¿o ya queda atrás la cosa? ¿Cómo se administra exáctamente este asunto?

Un Saludo, y muchas gracias por la atención.
#55
He editado uno de mis mensajes 2 veces, intentando escribir la palabra javascript con las letras "J" y "S" en mayúscula, como se suele ver... ¡Cuál fue mi sorpresa cuando ví que salían en minúsculas!

¿Tiene el foro alguna clase de filtro o similar para este caso?
¡En este post ocurre lo mismo! La "J" y la "S" salen en minúscula y sé perfectamente que las puse mayúsculas...
#56
EDIT: AVISO, esto ya no funciona con las nuevas versiones de skype. Si probáis y no funciona, probablemente sea porque tenéis una versión más reciente que con la que se hacía esto.

Bueno, escribo este breve tutorial para comentar una característica que encontré en skype no hace mucho, y es que te permite formatear el texto de una forma fácil y cómoda.
Lo primero de todo, debemos estar ligeramente familiarizados con html... ya que usaremos estas etiquetas para obtener los diferentes formatos. Seguramente ya haya bastantes tutoriales e información sobre html por el foro, así que reduciré esta parte al mínimo y pasaré a la parte práctica:

Pequeño resumen:
Tamaño: <font size="tamaño"></font>
Color: <font color="#color"></font>
Negrita: <b></b>
Cursiva: <i></i>
Subrayado: <u></u>
Parpadeo: <blink></blink>

El truco está en colocar las etiquetas a ambos lados del mensaje que vamos a enviar, por ejemplo, tal que así:

Texto tamaño 12, color morado y en negrita:
Citar<b><font size="12"><font color="#990099">MENSAJE DE TEXTO</font></b>

Texto parpadeante de color rojo y cursivo:
Citar<blink><i><font color="#FF0000">MENSAJE DE TEXTO</font></i></blink>

La cuestión es combinar las etiquetas y cerrarlas en el orden opuesto en el que las abrimos... Ahora, para que el mensaje se envíe con el formato, NO debemos pulsar enter.
Si lo hacemos así, simplemente enviaremos todo, sin que se aplique ningún formato.

Lo que tenemos que hacer, es mantener pulsado Control+Mayus, y hacer click en el botón de enviar mensaje. Esto hará que el mensaje se muestre en el formato deseado.
NOTA: Si el código está mal puesto, el mensaje no se enviará.

Espero que os haya sido de utilidad esta breve explicación de cómo dar formato a vuestros mensajes de skype, un saludo!
#57
Hola, estoy intentando hacer un programa en el que se introduzcan varios números en diferentes elementos de texto en una ventana de oracle forms, para que me los ordene en orden ascendente o descendente dependiendo de si pulso en un elemento botón o en otro, hasta ahí se hacerlo todo, pero cuando la cantidad de números aumenta, el código se vuelve un tanto pesado ya que los elementos son individuales, no los sé introducir como una matriz de controles...

¿Hay alguna manera de insertar matrices de controles, tales como las que se pueden utilizar en Visual Basic, pero en Oracle Forms Developer? Si es así, ¿cómo? y ¿de qué manera las utilizo después?

Un saludo y muchas gracias por adelantado.
#58
Programación Visual Basic / Randomize Timer?
3 Noviembre 2011, 12:08 PM
Hola, en Basic, siempre he usado Randomize Timer para obtener un resultado lo más parecido a algo verdaderamente aleatorio...
En el juego que estoy desarrollando, pensé en utilizar lo mismo en Visual Basic para generar un conjunto de naves aleatorias que atacarían a la flota del jugador.

Sin Randomize Timer funciona, pero siempre me genera las mismas naves así que realmente no me vale.

Ésta es la parte del código que tengo hecha para generar dichas naves y cargarlas en pantalla:

Cabecera del Frame:
Option Explicit

Dim enemy1 As Ship
Dim enemy2 As Ship
Dim enemy3 As Ship
Dim enemy4 As Ship
Dim enemy5 As Ship

Randomize Timer


Sub que genera una flota enemiga aleatoria:
-Storage.shipdb contiene tanto los nombres de naves como las rutas de las imágenes a cargar, sus stats etc. Haré que esta pseudo-base de datos se cargue desde ficheros luego, de momento esto es experimental. (Así que no nos centremos en mi chapuza :3)
-Si necesitáis todo el código para orientarme, decídmelo y paso también el módulo storage que contiene todas las estructuras, arrays, etc... No pongo más de momento, ya que mi única duda es sobre cómo utilizar Randomize Timer correctamente.
Private Sub enemyload()
Dim dice As Integer
If Storage.level > 10 Then
    dice = Int((Rnd * 5) + 1)
Else
    dice = Int((Rnd * 3) + 1)
End If

    Select Case (dice)
        Case 1
            enemy1.exists = True
            enemy2.exists = False
            enemy3.exists = False
            enemy4.exists = False
            enemy5.exists = False
        Case 2
            enemy1.exists = True
            enemy2.exists = True
            enemy3.exists = False
            enemy4.exists = False
            enemy5.exists = False
        Case 3
            enemy1.exists = True
            enemy2.exists = True
            enemy3.exists = True
            enemy4.exists = False
            enemy5.exists = False
        Case 4
            enemy1.exists = True
            enemy2.exists = True
            enemy3.exists = True
            enemy4.exists = True
            enemy5.exists = False
        Case 5
            enemy1.exists = True
            enemy2.exists = True
            enemy3.exists = True
            enemy4.exists = True
            enemy5.exists = True
    End Select
   
    'this will have to be modified as it is just for combat alpha testing
    'in the way it currently is, it only supports pirate ship load
    If enemy1.exists Then
        If Storage.level > 10 Then
            dice = Int((Rnd * 6) + 6)
            enemy1.shipModel = Storage.shipdb(dice, 0)
        Else
            dice = Int((Rnd * 3) + 6)
            enemy1.shipModel = Storage.shipdb(dice, 0)
        End If
    Else
        enemy1.shipModel = Storage.shipdb(0, 0)
        img_enemy1.Visible = False
    End If
    img_enemy1.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
       
    If enemy2.exists Then
        If Storage.level > 10 Then
            dice = Int((Rnd * 6) + 6)
            enemy2.shipModel = Storage.shipdb(dice, 0)
        Else
            dice = Int((Rnd * 3) + 6)
            enemy2.shipModel = Storage.shipdb(dice, 0)
        End If
    Else
        enemy2.shipModel = Storage.shipdb(0, 0)
        img_enemy2.Visible = False
    End If
    img_enemy2.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
   
    If enemy3.exists Then
        dice = Int((Rnd * 3) + 6)
        enemy3.shipModel = Storage.shipdb(dice, 0)
    Else
        enemy3.shipModel = Storage.shipdb(0, 0)
        img_enemy3.Visible = False
    End If
    img_enemy3.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
   
    If enemy4.exists Then
        dice = Int((Rnd * 3) + 6)
        enemy4.shipModel = Storage.shipdb(dice, 0)
    Else
        enemy4.shipModel = Storage.shipdb(0, 0)
        img_enemy4.Visible = False
    End If
    img_enemy4.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
   
    If enemy5.exists Then
        dice = Int((Rnd * 3) + 6)
        enemy5.shipModel = Storage.shipdb(dice, 0)
    Else
        enemy5.shipModel = Storage.shipdb(0, 0)
        img_enemy5.Visible = False
    End If
    img_enemy5.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
   
End Sub


El problema es que me da un error cuando intento ejecutarlo:
CitarEl procedimiento externo no es válido.
Marcándome la palabra Timer de la linea:
Randomize Timer

Se puede usar esta función en VB?
Si es así, cómo puedo hacerlo?

Muchas gracias por adelantado.
#59
Hola, me he estado informando de cómo cargar una nueva imagen en un picturebox... ya encontré que el comando sería el siguiente:

picturebox1.picture = LoadPicture ("ruta del archivo")

Mi problema esta vez es que no consigo que el VB me reconozca la ruta como válida.

La ruta absoluta del archivo no funciona, por ejemplo:

pic_ship.picture = LoadPicture ("C:\Program Files\SpaceRPG\Ships\scout mk I.gif")

Me da el siguiente error:

CitarError '76' en tiempo de ejecución:
No se ha encontrado la ruta: 'C:\Program Files\SpaceRPG\Ships\scout mk I.gif'

Qué es lo que estoy haciendo mal esta vez?
#60
Tengo un problema con el editor, y es que resulta que guardé un frame y un módulo en el directorio en el que guardo todas las cosas del proyecto... y ocurre la siguiente macabrada que no llego a comprender:
- Si cierro el editor, y hago doble click en el proyecto (.vbp), el frame y el módulo están ahí.
- Si doy click derecho a cualquiera de los dos y doy a "guardar como", me aparecen como archivos existentes en dicho directorio en la ventana de "Guardar Como".
- Si voy al directorio con el explorador de windows, los archivos no salen.
- Si guardo dichos archivos con cualquier otro nombre, ocurre lo mismo

¿He perdido 2 horas de trabajo? ¿Esos archivos son invisibles por alguna razón?
En resumen, ¿qué demonios está pasando ahí dentro? ¿Hay alguna manera de arreglarlo?

Nótese que mis otros frames son perfectamente visibles desde el explorador de windows.

Estoy usando Windows 7 Home Premium
El editor es VB6.

EDIT: Mirar abajo, más dudas y problemas han surgido.
#61
Saludos!

Estoy intentando hacer mi primer juego en basic, ya tengo hecha la interfaz básica y un par the chapuzas más... pero ahora mismo lo que me interesa es lo siguiente:
Ahora mismo estaba a punto de terminar la típica ventanita de "about", y me gustaría poner un par de botones que abriesen el navegador para permitir visitar mis dos websites.

Es posible? Si es así, cómo sería la sintaxis del comando?

Muchas gracias por adelantado.
#62
Buenas, resulta que tengo una consola xbox desde enero, apenas la he podido usar hasta ahora... Tras jugar un rato, me he dado cuenta de que uno de los botones no responde para nada, como si el mando estuviese estropeado.
Tengo otro mando en casa, pero estaba sin batería, así que lo enchufé a la consola para que cargase, pero resulta que las luces del mando parpadean de forma aleatoria, y éste no responde...

No sé qué probar para intentar solucionar esto, pero es que no puedo jugar con ninguno de ambos mandos.
¿Es problema de la consola, o de los mandos?
#63
Bueno, creo que éste es el problema de aceptar un móvil gratis en una promoción.
Aparentemente es una especie de modelo chino, ya de por sí me resulta complicado utilizarlo con la comodidad y agilidad que te podrían proporcionar otros móviles, pero este no es el asunto a tratar ahora mismo.

Resulta que para transferir cualquier cosa a este móvil en particular, se necesita un software llamado Join Me. Que proveen con el aparato en un miniCD.
Hoy me encuentro con que no funciona, y el nivel de detalle del mensaje de error es demasiado mínimo como para saber qué posibles soluciones tomar.

Básicamente me las tengo que arreglar con este mensaje de error:


Bien, pues:

1.- Si, he comprobado que esté bien conectado, suelo hacerlo antes de usar cualquier aparato y esas cosas...
2.- Hmm, bien, esto no funciona, sigue exactamente igual.
3.- Tras 2 reinstalaciones sigue exactamente igual...

Vamos a visitar pues la URL que proveen:
Tras una pequeña búsqueda, veo que hay una sección para descargar software para dispositivos, bien!
Procedo a buscar mi modelo...


Genial! No es que no haya parches o fixes... Es que directamente no hay nada...

Aquí es donde me quedo trabado y ya no sé que hacer...
¿Qué puedo probar ahora?

Un saludo y muchas gracias por adelantado.

EDIT: Sigo buscando y lo único que encontré es otra consulta sobre exactamente el mismo problema de hace 2 años sin resolver.
http://www.foroyoigo.com/topic/zte-f188
#64
Bueno, mi problema de hoy es IPv6... Estoy hosteando un server de un videojuego (Freelancer) en casa.

Dicho server no soporta el protocolo IPv6, y sólo trabaja correctamente con IPv4.

El problema es, que intenta arrancar siempre con una dirección IPv6, que el videojuego no comprende, y por tanto, no consigue conectarse nadie cuando esto ocurre. Tras unos 20-30 errores de conexión, intenta usar las direcciones IPv4 correctas. Pero es un incordio tener que intentar logear tantas veces para que cambie.

Ahora bien, he intentado deshabilitar IPv6 por completo en mi PC. (Windows 7 Home)

He ido al panel de control y deshabilitado allí IPv6
También he probado llendo al registro y editando la entrada correspondiente.

Pero ahí insiste, e IPv6 sigue intentando imponerse en el servidor, el cual aparece con una IPv6 en vez de las 2 posibles direcciones IPv4 que debería usar: (LAN y Hamachi) Causando problemas.

¿Hay alguna manera de cargarme IPv6 para no verlo nunca más (al menos en el server)? (Me ha metido tanto asco que no lo quiero ni ver).

Ya sé que en un futuro no muy lejano se usará IPv6... si hay alguna solución alternativa, lo agradecería.
Lo que me da asco es que se auto-imponga de esa manera algo que hace que las cosas dejen de funcionar correctamente.

Un Saludo.
#65
Llevo pegándome con este varias horas, pero no consigo que funcione.

Enunciado: Se desea elaborar una encuesta con objeto de hacer un estudio sobre el consumo de tabaco. Para ello se solicita un programa que deberá permitir la recogida de datos sobre una muestra de 1000 personas fumadoras. La recogida de datos se realizará sobre un vector (DATOS) de 1000 elementos. Cada elemento recogerá la siguiente información:

Codigo
Cigarrillos Diarios
Marca

El programa deberá permitir:
1.- Recogida de datos
2.- Media de cigarrillos fumados por persona y dia
3.- Visualización del consumo por marcas
4.- Marca con mayor índice de fumadores
5.- Fin

Opcion 1: Se llamara a un procedimiento que permitirá la carga del vector (esta opción no terminará hasta que se completen los datos de todo el vector.

Opcion 2: Se llamará a una función que retornará dicha media

Opcion 3: Para la realización de esta opción se dispondrá de un vector de estructuras que contendrá la siguiente información:

Marca
Numero cigarrillos

Este vector se supone ya cargado con el campo Marca. El campo numero_cigarrillos está a cero, se completará por programa en esta opción. Para ello una vez que se hayan recogido los datos de la encuesta se recorrerá el vector datos enviando "cada registro" a un procedimiento que buscará la casilla correspondiente en el vector marcas para incrementar el campo Numero cigarrillos (se supone que estan incluidas todas las marcas)

Con el vector marcas ya actualizado se procederá a la visualización

Opción 4: Función que retornará dicha estructura para su posterior visualización.

Esto es lo que tengo hecho, pero no funciona.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 5 /*Tras pruebas, 1000*/
#define M 5 /*Cantidad de marcas, no definida en enunciado, 5 por poner varias*/
#define L 20 /*Longitud de cadena*/

typedef struct
{
   int cod;
   int cig;
   char marca;
} encuesta;

typedef struct
{
   char marca2[L];
   int numero_cig;
} vector;

void menu();
void intro(encuesta* dat);
float media(encuesta* dat);
void cons_marca(encuesta* dat, vector* mar);
void mejor_marca(vector* mar);
int posicionar(char data[], char mar[]);

/*Modulo Principal*/

void main()
{
   encuesta datos[N];
   vector marcas[M]= /*Viene pre-cargado segun el enunciado*/
   {{"Malboro",0},
   {"Lucky",0},
   {"Strike",0},
   {"Camel",0},
   {"Otra",0}};

   int op;
   float mid;

   system("cls");
   menu();
   scanf("%d",&op);
   while(op!=5)
   {
    switch(op)
      {
         case 1:
          intro(datos);
            break;
         case 2:
          mid=media(datos);
            printf("\nMedia: %f",mid);
            break;
         case 3:
          cons_marca(datos,marcas);
            break;
         case 4:
          mejor_marca(marcas);
            break;
         case 5:
          printf("\nSaliendo de la aplicacion...");
            getchar();
         default:
          printf("\nOpcion erronea");
      }

      system("cls");
      menu();
      scanf("%d",&op);
   }
}

/*0.- Menu*/
void menu()
{
   system("cls");
   printf("\nMENU:\n--\n");
   printf("1.- Recogida de datos\n");
   printf("2.- Media de Cigarrillos\n");
   printf("3.- Consumo por Marcas\n");
   printf("4.- Marca con Mayor Consumo\n");
   printf("5.- Fin\n");
   printf("Seleccione una opcion... ");
}

/*1.- Recogida de datos*/
void intro(encuesta* dat)
{
   int cont;

   system("cls");
   for(cont=0;cont<N;cont++)
   {
      dat[cont].cod=cont; /*Cod Numerico automatico segun introduccion*/
      printf("Cigarrillos Diarios: ");
      scanf("%d",&dat[cont].cig);
      printf("\nMarca: ");
      scanf("%s",dat[cont].marca);
   }
}

/*2.- Media de cigarrillos fumados por persona y dia*/
float media(encuesta* dat)
{
   int cont;
   float mid=0;

   system("cls");
   for(cont=0;cont<N;cont++)
   {
    mid=mid+dat[cont].cig;
   }
   mid=mid/N;
   return mid;
}

/*3.- Visualizacion del consumo por marcas*/
void cons_marca(encuesta* dat, vector* mar)
{
   int cont,pos;
   for(cont=0;cont<N;cont++)
   {
    pos=posicionar(&dat[cont].marca,mar);
    mar[pos].numero_cig=mar[pos].numero_cig+dat[cont].cig;
   }
   system("cls");
   printf("Consumo por marcas:\n--\n");
   for(cont=0;cont<N;cont++)
   {
    printf("%s: %d\n",dat[cont].marca,mar[pos].numero_cig);
   }
}

/*4.- Marca con mayor indice de fumadores*/
void mejor_marca(vector* mar)
{
   int cont,max=0,pos;
   for(cont=0;cont<N;cont++)
   system("cls");
   {
    if(mar[cont].numero_cig>max)
      {
      max=mar[cont].numero_cig;
        pos=cont;
      }
   }
   printf("Mejor Marca: %s", mar[pos].marca2);
}

/*3.1- Localizacion de la posicion correcta para incrementar el valor de dat[].cig*/
int posicionar(char data[], char mar[])
{
   int cont=0,pos,found=0;
   while((cont<M)||(!found))
   {
    if(strcmp(data,mar)==0);
      {
      pos=cont;
        found=1;
      }
      cont++;
   }
   return pos;
}


A ver si me podéis echar una mano... todavía programo bastante mal y me queda mucho por aprender...

Un saludo y gracias por adelantado.
#66
Multimedia / Protección CSS/CPPM?
13 Febrero 2011, 13:31 PM
Es la primera vez que me pasa esto... Estoy intentando copiar un disco pero no soy capaz.

Con ImgBurn me ha dado este mensaje:



Con DVD Shrink me ocurre esta pedazo macabrada:

(Imagen Grande)
http://img46.imageshack.us/i/problemu.png/

Según DVD Shrink tras leer el disco, un DVD tiene una capacidad de tan sólo 4,4Mb, y lo que es peor... El DVD a copiar sólo pesa 32,6??

Qué es lo que puede haber mal? Y si es cosa de la protección, cómo la salto?
#67
Programación C/C++ / Dos Ejercicios en C
21 Enero 2011, 13:12 PM
Bueno, ya empezamos con C en clase. Tengo hechos ya cuatro ejercicios, pero dos de ellos no consigo que funcionen bien, son los siguientes:

3.- En una estación de autobuses se requiere un programa que contabilice los billetes vendidos al cabo del día. Teniendo en cuenta que existen tres trayectos A,B,C cuyas tarifas con 6,12,18 € respectivamente.
El programa pedirá al viajero que introduzca el número de billetes que desea y el trayecto, finalizando la emisión de billetes al introducir $ en el trayecto. Una vez terminada dicha emisión, el programa visualizará:
NºBILLETES              TOTAL EUROS
A:..............                 ................
B:..............                 ................
C:.............                 .................


Esto es lo que tengo hasta el momento, no quiero que me lo resuelvan, sino que me digan qué está mal y me orienten un poco sobre qué hay que corregir sin decírmelo literalmente:

#include <stdio.h>
main()
{
char opcion;
int a=0,b=0,c=0,ap,bp,cp,x;
   printf("Introduzca un trayecto\n");
   opcion=getchar();
   printf("Introduzca cantidad\n");
scanf("%d",&x);
   while(opcion!='$')
   {
    switch(opcion)
   {
    case 'a':
      a=a+x;
          break;
      case 'b':
        b=b+x;
         break;
      case 'c':
    c=c+x;
         break;
      default:
      printf("Opcion erronea\n");
   }
         printf("Introduzca un trayecto\n");
opcion=getchar();
   printf("Introduzca cantidad\n");
scanf("%d",&x);
   }
   ap=a*6;
   bp=b*12;
   cp=c*18;
   printf("\tNºBILLETES\tTOTAL EUROS");
   printf("A\t%d\t%d",a,ap);
   printf("B\t%d\t%d",b,bp);
   printf("C\t%d\t%d",c,cp);
}


4.- Programa que visualice cuantos números de los N primeros (N introducido por teclado) cumplen las siguientes condiciones:
- El producto de sus divisores es múltiplo de 5
- La suma de sus divisores es múltiplo de 3
- Cumple ambas condiciones anteriores a la vez


Esto es lo que tengo de momento, lo mismo que en el anterior, quiero ver dónde he fallado para intentar corregirlo, no quiero que me lo den hecho:

#include <stdio.h>
main()
{
int cont,actual,n,res5,res3;
   printf("Introduzca n\n");
   scanf("%d",&n);
   for(actual=1;actual<=n;actual++)
   {
    res5=0;
      res3=0;
      while(cont<=actual/2)
      {
      if(actual%cont==0)
         {
          res5=res5*cont;
            res3=res3+cont;
         }
      }
      if(res5%5==0)
      {
        printf("El producto de los divisores de %d es multiplo de 5\n",actual);
      }
      else
      {
        printf("El producto de los divisores de %d no es multiplo de 5\n",actual);
      }
      if(res3%3==0)
      {
        printf("La suma de los divisores de %d es multiplo de 3\n",actual);
      }
      else
      {
        printf("La suma de los divisores de %d no es multiplo de 3\n",actual);
    }
      if ((res5%5==0)&&(res3%3==0))
      {
        printf("Cumplen ambas condiciones anteriores a la vez\n");
      }
      else
      {
        printf("No cumplen ambas condiciones anteriores a la vez\n\n");
      }
   }
}


Gracias por adelantado y un saludo, miau!
#68
Programación C/C++ / Eclipse y Headers en C
20 Diciembre 2010, 22:09 PM
Estoy empezando a trastear con C, pero la versión actual de eclipse no sabe dónde buscar los headers o algo...
Cuando introduzco la línea:
#include <stdio.h>
Me da un error de inclusión. O_o

He estado mirando y dicen en varios sitios que las versiones recientes tienen ese problema. Hay alguna versión que funcione bien con C?
En caso negativo, me podéis proponer alguna alternativa libre o gratuita y que sea cómoda de usar? (Estoy cansado de usar el notepad y luego compilar con gcc en la consola para experimentar...)
#69
Pues eso, si tengo una hoja de cálculo, en la que estoy anotando en dos celdas diferentes las victorias (D2) y las derrotas (D3).

Qué fórmula tendría que poner en una casilla para que me calcule el ratio de victorias/derrotas en porcentaje? (Gana x% de las veces)

Sé que es, probablemente, una duda estúpida. Pero ahora mismo estoy bloqueado y no se me ocurre como calcularlo.
#70
Windows / Resoluciones Cambiantes.
6 Diciembre 2010, 12:08 PM
Cada vez que inicio mi PC, me encuentro con que inicia con una resolución diferente... (1024x768, 1280x720...) (Lo que implica desordenamiento de iconos y la incomodidad de tener que volverla a poner a 1920x1080 que es lo que uso habitualmente).

En Panel de Control > Apariencia y Personalización > Pantalla > Resolución de Pantalla.
Muchas veces en vez de ponerme Pantalla: 1.- SyncMaster
Me pone Pantalla: Genérico PnP (En este caso, me limita mucho las resoluciones disponibles)

¿Qué es lo que puede estar fallando y cómo puedo arreglarlo? ¿Puede ser fallo de los controladores?
Tiende a arrancar en 1920x1080 tras un par de reinicios. Pero sigue siendo muy incómodo...
#71
Estaba ocioso y me puse a buscar cosas aleatorias por ahi, hasta que encontré esto.

El emblema hacker (glider) viene del juego de la vida.
Es porque es la cosa más pequeña que se desplaza por ahi sin desintegrarse.
También vi cosas impresionantes, como una pistola que dispara gliders. O_o

Si os interesa, aquí tenéis los links.

Emblema Hacker (Glider)
http://es.wikipedia.org/wiki/Emblema_hacker
Juego de la Vida
http://es.wikipedia.org/wiki/Juego_de_la_vida
GIF de la pistola de gliders de Gosper:


GAMOLIYAS (Juego de la Vida en Web)
http://www.granvino.com/jam/stuff/juegos/gamoliyas/spanish/index.htm
#72
Hardware / Teclado PS2 no responde
30 Noviembre 2010, 09:55 AM
Estoy tecleando con el teclado en pantalla.

Mi teclado no responde a nada. (de la noche a la mañana).
Que puede estar fallando? Se jodio el teclado, o puede ser problema de software?
#73
Hardware / Montando un PC
25 Noviembre 2010, 13:10 PM
Bueno, pues estoy pensando montar un PC, dispongo de poco más de 900 €, y unos 300€ van a ir en Monitor y demás periféricos.

Esta es la idea que tenía:

CAJA SEMITORRE 3FREE 320 NEGRA/ROJA S/F - 27,02 €
PLACA AMD ASUS CROSSHAIR III FORMULA AM3 DDR3 PCX - 199,04 €
PROCESADOR AMD PHENOM II X6 1090T 3.2/3.6GHZ TURBO CORE SKT AM3 BLACK EDITION - 253,26 €
TARJETA GRAFICA 1GB ATI POWERCOLOR HD5450 PCX DDR3 HDMI - 53,35 €
MEMORIA 4 GB DDR3 1333 KINGSTON - 59,94 €
FUENTE ALIMENTACION 500W INNOBO IN117 - 40,90 €

Mis dudas son, ¿son todos los elementos que he escogido compatibles? Si no lo son, ¿qué alternativa podría escoger? ¿Es buena la relacion calidad-precio?
#74
Estoy harto de que me pasen estas cosas. Por favor, permitid borrar los post a los user en un intervalo de 10 minutos o algo...
Estoy cansado de tener que pedir que me borren un post porque me equivoco de pestaña o cosas asi.

Es algo estandar y básico en un gran número de foros.
#75
Foro Libre / Bug macabrísimo en deviantart.com
3 Noviembre 2010, 11:02 AM
Solo por aprender por qué pasan esta clase de cosas...

Me apareció este error en Deviantart...
http://img638.imageshack.us/img638/711/bugwv.png

Y ahora no puedo hacer nada allí. X3 Solo me salen montones de errores como ese, cada uno diferente dependiendo del link que trate de seguir... Todo en pantallas deformes como esta.

¿Es problema mío o suyo? En cualquiera de ambos casos, ¿Qué pudo haberlo provocado, y cómo se arregla?

Gracias por adelantado.

PD: No tengo ni idea de donde colocar este topic. :/
#76
Estructuras Básicas de Datos:

Introducción:
Dato: Cualquier información correspondiente a una entidad susceptible de un tratamiento informático. Ej.: (Entidad: Empresa / Datos: Nombre, Dirección, Nº Empleados...)

Para un ordenador la información que maneja es numérica (ceros y unos) "binario", aún así, los datos tienen que estar clasificados para poder tratarlos de forma conveniente.

La clasificación de los datos determina las ESTRUCTURAS DE DATOS de un lenguaje.

Un dato se caracteriza por llevar asociado los siguientes elementos:
Identificador: nombre que permite referenciar el dato.

Los identificadores de los datos deben cumplir una serie de condiciones:
a-   Pueden estar constituidos por letras, dígitos y el carácter "_"
b-   No pueden contener espacios.
c-   El nº de caracteres y dígitos máximos dependen del compilador utilizado.
d-   Deben comenzar por una letra
e-   Deben dar alguna pista para reconocer el dato que van a referenciar.
Tipo: Determina el rango de valores que van a ser posibles para ese dato.
Ej.: EDAD: Nº entero.

Valor inicial: Valor perteneciente al rango determinado por el tipo asociado al identificador.

Tipos de datos:
Clasificación de los datos:
Datos Básicos
Numéricos: Entero, Real

No Numéricos: Carácter, Lógico

Derivados: Puntero

Datos Estructurados:

Internos:
Estáticos lineales: Tablas
Dinámicos   Lineales: Listas, Pilas, Colas
No lineales: Árboles, Grafos

Externos: Ficheros, Bases de Datos

Compuestos: Estructura de Datos, Registro

Puntero: Funciona con direcciones de memoria asociadas.
Existe un operador que permite obtenerlas, pero ya lo trataremos más adelante.

Datos estructurados: Compuestos de datos básicos.
(Internos: Memoria Temporal / Externos: Dispositivos de Almacenamiento)

Datos dinámicos: Reservas de memoria en tiempo de ejecución.
   Lista: Se accede y llena en cualquier orden.
   Pila: Se insertan los datos en orden, se extraen en orden inverso.
   Cola: Obligatorio insertarlos en orden y extraerlos en ese mismo orden.

Datos estáticos: Reservan una cantidad fija de memoria (En tiempo de compilación)

Datos Básicos:

Datos numéricos: Se utilizan para contener magnitudes y se dividen en enteros y reales.
a-   Enteros: Se emplean para representar números enteros, el rango de representación depende del compilador y del ordenador. Los datos de tipo entero aparecen representados por los dígitos decimales, que pueden ir precedidos por los signos + o -. Ej.: -35 +3200.

b-   Reales: Se emplean para representar números con parte fraccionaria o números Enteros muy grandes o muy pequeños que están fuera del rango establecido para los enteros.

Para su representación se utilizan dos formatos:

Decimal: Dígitos del 0 a 9 y el punto decimal que separa la parte entera de la fraccionaria.
Formato Científico o Exponencial: <mantisa><E><característica>

   Mantisa: Nº real decimal.
   E: Base 10
   Característica: Exponente.

La representación interna viene determinada por la precisión:
•   Para simple precisión    (32 bits)
o   Signo - 1bit - (posición 31)
o   Exponente - 8bits - (posiciones 23 a 30)
o   Mantisa - 23bits - (posiciones 0 a 22)
•   Para doble precisión    (64 bits)
o   Signo - 1bit - (posición 63)
o   Exponente - 11bits - (posiciones 52 a 62)
o   Mantisa - 52bits - (posiciones 0 a 51)

Datos No numéricos:
a-   Carácter: Se emplea para representar un carácter dentro de un conjunto definido por el fabricante del ordenador, de tal manera que cada carácter se corresponda con un nº entero, según un determinado código. Ej.: Código ASCII.
Se representan encerrando el carácter entre comillas simples, existen los siguientes tipos de caracteres:
o   Dígitos: '1','0','9'...
o   Alfabéticos: 'A','a','b'...
o   Especiales: '*','_'...

La representación interna depende del código utilizado, los códigos más empleados son los que utilizan 8 bits, como por ejemplo el ASCII (American Standard Code for Information Interchange) o el EBCDIC (Extended Binary Coded Decimal Interchange Code)

Ej.: A = 65 = 01000001

En algunos lenguajes como el COBOL se considera tipo de dato básico a las cadenas alfanuméricas. Estas se representan encerradas entre dobles comillas.
Ej.: "I.E.S Dr. Fleming Nº25"

En C no es un tipo de dato básico (Se usan tablas)

b-   Lógico: Es un tipo de dato que solo puede tomar dos valores, se pueden representar como Cierto y Falso, True y False, V y F.
Internamente se representa con un '0' para false y un '1' para true.
En C '0' es false, mientras que cualquier otra cosa se considera como true.

Variables y Constantes:

Memoria Central: Dispositivo de almacenamiento temporal de:
•   Datos
•   Instrucciones
•   Resultados de un programa:
o   Intermedios
o   Finales

Consideremos la memoria como una caja dividida en compartimentos. Cada compartimento es del mismo tamaño y está identificado por una dirección de memoria. Los compartimentos se suelen denominar celdas, las direcciones, posiciones de memoria.

Cada celda tiene una dirección distinta que permite identificarla. Esto nos permite almacenar y recuperar datos de la Memoria Central.

Nota: Las cadenas no se pueden meter en una sola dirección de memoria, sino que usan varias simultáneamente.

Almacenar algo en una posición usada sobrescribe lo anterior por lo tanto:
La escritura en memoria es destructiva, mientras que la lectura no lo es.
Las zonas de memoria no están vacías a menos que se sobrescriban intencionadamente.
Las direcciones de memoria se pueden identificar con un nombre, el sistema se encarga de asignar una dirección concreta a ese nombre. (En lenguajes de programación de alto nivel)[C o superior].

Variable: Zona de memoria referenciada con un nombre de variable que va a contener un dato.
Nota: Una variable NO es un dato, contiene un dato.
Para que una variable esté perfectamente definida hay que indicarle:
•   Un nombre (identificador)
•   Un tipo de dato
•   Un valor inicial

Para introducir un valor en una variable se realiza lo siguiente:
<variable> = <valor>
A este hecho se le llama Asignación de Variables.

Para recuperar el valor basta con nombrar la variable:
<variable>
(haciendo esto la máquina tomará <valor> de la memoria y sustituirá la variable por dicho valor en la ejecución)

En función del dato asignado a la variable, se pueden clasificar en numéricas, enteras, reales, alfanuméricas, caracteres y lógicas.

Asignación: Introducción de un valor o del contenido de otra variable en una zona de memoria referenciada por ese nombre de variable. = se usa tanto como asignación, como para preguntar al sistema si es igual.

Nota: Se aconseja usar '==' para preguntar si es igual y '=' para asignar, esto ayudará a diferenciar ambas tareas de forma sencilla a la hora de revisar el código.

Tanto la variable receptora como la otra tienen que ser del mismo tipo para realizar la asignación del valor de una variable a otra.
<variable1> = <variable2>

Constante: Es una zona de memoria referenciada con un nombre de constante, cuyo valor no puede cambiar a lo largo de la ejecución de un programa.
Las constantes pueden ser numéricas, enteras o reales, alfanuméricas o de carácter.
Las constantes lógicas no tienen sentido.

Operadores:
Operadores: Símbolos que permiten conectar datos, variables y constantes con el fin de realizar una operación determinada.
Operador - Símbolo - Significado

Paréntesis - () - Paréntesis

Aritméticos - **,^ - Potencia
* - Producto
/ - División Real
DIV,\    - División Entera
%,mod - Resto de una división entera
+ - Suma
- - Resta
+ - Concatenación
- - Concatenación eliminando espacios en blanco
Relacionales - ==,= - Igual, Asignación
!=,<> - Distinto
< - Menor
<= - Menor o Igual
> - Mayor
>= - Mayor o Igual

Lógicos - !,NOT,NO - Negación
ff,AND,Y - Conjunción
||,OR,O - Disyunción

AB AND   AB OR   A NOT
00 0         00 0      0 1
01 0         01 1      1 0
10 0         10 1      
11 1         11 1      

Existen reglas de prioridad entre los distintos operadores, dependen de los lenguajes de programación, pero en general son los siguientes:
1.   Paréntesis
2.   Signo
3.   Potencia
4.   Producto, División y Módulo (Resto)
5.   Suma y Resta
6.   Concatenación
7.   Relacionales
8.   Negación
9.   Conjunción
10.   Disyunción

Expresiones:
Expresiones: Son un conjunto de valores variables (operandos) y operadores relacionados o combinados entre si, según unas reglas establecidas. Los operandos pueden ser también valores retornados por funciones.

En función del resultado obtenido, las expresiones se clasifican en:
•   Aritméticas: El resultado de la evaluación de la expresión es numérico.
•   Relacionales: Utilizan operadores relacionales y el resultado es un valor lógico.
•   Lógicas: Utilizan operadores lógicos y se aplican expresiones relacionales. El resultado de la evaluación es un valor lógico.
•   Alfanuméricas: Utilizan operandos y operadores alfanuméricos.

--

ESTRUCTURAS ESTÁTICAS DE DATOS:
Tablas: Está formada por un número fijo de elementos (variables) todos ellos del mismo tipo de datos y situados en posiciones contiguas de memoria.
Elemento: Es cada uno de los datos que constituyen la tabla.

Nombre de Tabla: Es un nombre de variable que permite referenciar toda la tabla de forma global y nos permitirá acceder a cada elemento de forma individual.

Tipo de Tabla: Es el tipo de dato de todos los elementos de la lista.

Índices: Un entero positivo que nos permite identificar cada elemento de una tabla.

Tamaño de Tabla: Número máximo de elementos que componen la tabla.

ACCESO A LOS ELEMENTOS: Los elementos de una tabla tratados individualmente son variables que reciben el mismo trato que cualquier otra variable simple, con un tipo de dato que coincide con el tipo de la tabla y una denominación propia que la distingue de los diversos elementos. Para acceder o referenciar un elemento en particular es suficiente con indicar el nombre de la tabla seguido por el índice correspondiente entre paréntesis.

Dimensión: El número de índices que necesitamos para referenciar una tabla.

CLASIFICACIÓN DE LAS TABLAS:
•   Unidimensionales: (Vectores) En este caso, solo es necesario un índice para acceder a los elementos de la misma.
<Nombre> (<índice>)
•   Bidimensionales: (Matrices) Son aquellas que necesitan dos índices para acceder a cada uno de sus elementos.
<Nombre> (<índice1><índice2>)

Programación Estructurada:
Introducción:
Desde el nacimiento de la informática, se han ido desarrollando métodos y herramientas con el objetivo de facilitar y mejorar el diseño y resolución de programas. Hay dos clases:
Programación estructurada: Conjunto de técnicas que incorporan:
a-   Diseño descendente (Top-Down) "Diseño por capas"
b-   Descomposición de tareas en tareas más simples
c-   Solo se pueden utilizar 3 tipos de estructuras
a.   Alternativa
b.   Repetitiva
c.   Secuencial


Programación modular: Consiste en la división de un programa en módulos, de tal forma que cada uno de ellos se encargue de la ejecución de una tarea. Los módulos pueden ser subprogramas, subrutinas, funciones o procedimientos.

Partes de un programa:
Todo programa está constituido por un conjunto de instrucciones o de órdenes capaces de manipular los datos. Estas órdenes pueden ser divididas en tres grandes grupos que determinan las partes de un programa.
Entrada de datos -> Proceso -> Salida de resultados

•   Instrucciones de entrada de datos: Conjunto de instrucciones que permiten llevar datos desde el exterior (tomar datos a través de un dispositivo de entrada y almacenarlos en la memoria central).
•   Instrucciones de proceso: Conjunto de instrucciones encargadas de procesar o realizar un tratamiento de datos obteniendo unos resultados que se almacenan en la memoria central.
•   Instrucciones de salida: Permiten extraer datos (resultados) de la memoria central mostrándolos a través de un dispositivo de salida.

Datos ->
Dispositivo Externo <-> Memoria Principal <-> Proceso o algoritmo
<- Resultados

Algoritmo:
Es la descripción abstracta de todas las acciones u operaciones que debe realizar un ordenador de forma clara y detallada así como el orden en el que estas deberán ejecutarse junto con la descripción de todos aquellos datos que deberán ser manipulados por dichas acciones y que nos conducen a la solución del problema. Un algoritmo deberá reflejar las 3 partes de un programa (entrada, proceso, salida) es importante tener en cuenta que todo algoritmo debe ser totalmente independiente del lenguaje de programación utilizado. Las características que debe cumplir el diseño de todo algoritmo son las siguientes.
a-   Debe ser conciso y detallado. Debe reflejar con el máximo detalle el orden de ejecución de cada acción u operación que vaya a realizar el ordenador.
b-   Debe ser flexible, permitiendo y facilitando así las futuras modificaciones o actualizaciones del diseño realizado.
c-   Debe ser finito, tener comienzo y final.
d-   Ser lo más claro y sencillo posible.

Diagramas de Flujo:
Son representaciones gráficas que mediante símbolos estandarizados permiten describir las acciones y la lógica que ha de seguir un algoritmo junto con el flujo de datos para la obtención de los resultados convenidos.
Ordinogramas: Diseño
Organigramas: Análisis
Pseudocódigo: Lenguaje intermedio entre el natural y el lenguaje de programación (el cual vamos a tratar en este tutorial). Todo algoritmo en pseudocódigo debe reflejar las distintas partes de un programa.

Tipos de Instrucciones:
Instrucción: Hecho o suceso de duración limitada que permite generar unos cambios previstos en la ejecución de un programa.
Instrucciones de definición de datos: Permiten reservar la memoria necesaria para almacenar los datos que se van a manejar en el programa. Mediante el uso de variables simples o complejas.

Las instrucciones de definición consisten únicamente en dar un nombre y un tipo de dato a las zonas de memoria que quiero reservar.

Instrucciones primitivas:
•   Instrucciones de Entrada: Permiten almacenar un dato en la memoria central durante el uso de una o más variables procedentes de un dispositivo externo (generalmente el teclado).
Leer <variable>
Leer <lista de variables

Esta instrucción para el proceso de ejecución hasta que se introduzcan tantos datos como variables aparezcan en la lista de variables.
•   Instrucciones de Asignación: Consiste en introducir en una variable el resultado de evaluar una expresión.
<variable> = <expresión>
•   Instrucciones de Salida: Permiten recuperar un dato de la memoria central para mostrarlo desde un periférico de salida.
visualizar <expresión> (Pantalla)
imprimir <expresión> (Impresora)

Instrucciones Compuestas:
No pueden ser ejecutadas directamente por el procesador y están constituidas por un bloque de acciones agrupadas en subrutinas, subprogramas, funciones o módulos.
<nombre_modulo>

Instrucciones de control: Se utilizan para controlar la secuencia de ejecución de un programa y también para determinar si se ejecutan o no bloques de instrucciones:

•   Alternativas:
o   Simple: Permite la ejecución de un grupo de instrucciones en función de que se cumpla o no una condición.
Si <condición>
<instrucción1>
<instrucción2>
<instrucciónn>
Fin Si

o   Doble: Permite decidir por un grupo de instrucciones u otro en función de si se cumple la condición o no.
Si <condición>
<instrucción11>
<instrucción12>
<instrucción1n>
Sino
<instrucción21>
<instrucción22>
<instrucción2n>
FinSi

o   Múltiple: Ejecuta distintos grupos de instrucciones en función del resultado de la evaluación de una expresión.
Según_Valor: <expresión>
<valor1>: <bloque de instrucción 1>
<valor2>: <bloque de instrucción 2>
<valorn>: <bloque de instrucción n>
Por_Defecto: <bloque de instrucción por defecto>
Fin_Según_Valor


Instrucciones repetitivas:
Nos permiten variar o alterar la secuencia normal de ejecución de un programa haciendo posible que un grupo de acciones se ejecute más de una vez de forma consecutiva, también se denomina bucles o lazos.
-   Estructura Mientras: Se caracteriza por la repetición de un conjunto de instrucciones en función de que se cumpla o no la condición, pueden repetirse de 0 a n veces.
Mientras <condición>
<Instrucción1>
<Instrucción2>
<Instrucciónn>
Finmientras


o   Se evalúa la condición, si se cumple, se ejecutan las instrucciones comprendidas entre el mientras y el fin mientras y de nuevo se evalúa. El proceso termina cuando la condición se cumple.

-   Estructura Repetir: Permite la repetición de un proceso mientras se cumpla una condición evaluando la condición al final de cada repetición, el proceso se repite de 1 a n veces.
Repetir
<Instrucción1>
<Instrucción2>
<Instrucciónn>
Mientras <condición>


o   El conjunto de instrucciones entre repetir y mientras, se ejecuta (al menos una vez) evaluando la condición y volviendo a repetir en caso de que se cumpla.

-   Estructura Para: Repetición de un proceso un número determinado de veces
Para <variable> = <valor_inicial> hasta <valor_final> Inc = <valor_incremento>
<Instrucción1>
<Instrucción2>
<Instrucciónn>
Finpara


Donde el incremento indica la cantidad a aumentar la variable dentro del proceso repetitivo.

Contadores y Acumuladores:
Contador: Es una variable que se incrementa o decrementa en una cantidad constante.
<variable> = <variable> + 1
Acumulador: Variable que se incrementa en un valor no constante.
<variable1> = <variable1> + <variable2>

Tenéis disponibles en este otro post varios ejercicios resueltos de pseudocódigo con los que podéis poner en práctica lo aprendido en este.

Ejercicios de Pseudocódigo

Iré actualizando ambos post según me vaya siendo posible.
#77
Ejercicios / Ejercicios de pseudocódigo
17 Octubre 2010, 15:00 PM
Bueno, pues me he animado a postear unos ejercicios sencillos de pseudocódigo. Si veis algún error en la resolución de los mismos, decídmelo, que así aprendo más. ^w^

Espero que os gusten y os sean útiles para practicar. ^w^

Algoritmo 1: Programa que visualice los n primeros números de la sucesión de Fibonacci.

Datos: a,n,cont,suma ; nºentero

Algoritmo:

INICIO
   a = 0, b = 1
   VISUALIZAR "Introduzca n"
   LEER n
   SI n > 2
       suma = a + b
       VISUALIZAR a,"",b
       PARA cont = 3 HASTA n
           a = suma
           suma = a + suma
           VISUALIZAR suma
       FIN PARA
   SINO
       VISUALIZAR "No se puede aplicar la serie a menos de 3 términos!"
   FIN SI
FIN


Algoritmo 2: Algoritmo que visualice los 25 primeros números perfectos.

Datos: n, cont, res, final

Algoritmo:

INICIO
   final = 0
   REPETIR
       res = 0
       PARA cont = 1 HASTA n DIV 2
           SI cont % n == 0
               res = res + cont
           FIN SI
       FIN PARA
       SI res == n
           VISUALIZAR n
           final = final + 1
       FIN SI
       n = n + 1
   MIENTRAS final < 25
FIN


Algoritmo 3: Introducir por teclado una secuencia de datos, cada una de ellas compuestas por un nombre y las calificaciones obtenidas por ese alumno en 6 asignaturas, la secuencia termina al introducir fin como nombre de alumno, el algoritmo deberá visualizar el nombre del alumno, seguido de su nota media, al introducir fin, se mostrará la nota media del grupo. (No se permite usar tablas en este ejercicio, pero simplificaría mucho el code)

Datos: alumno ; alfanumerico
nota, media, grupo: nº real
cont, alumnos, nalumnos : nº entero

Algoritmo:

INICIO
   nalumnos = 0, global = 0
   REPETIR
       VISUALIZAR "Introduzca el nombre del alumno"
       LEER alumno
       media = 0
       SI alumno != fin
           PARA cont = 1 HASTA 6
               VISUALIZAR "Introduzca la nota número" , cont
               LEER nota
               media = media + nota
           FIN PARA
           media = media / 6
           global = global + media
           nalumnos = nalumnos + 1
           VISUALIZAR alumno, media
       FIN SI
   MIENTRAS alumno != fin
   global = global / nalumnos
   VISUALIZAR "Media del grupo: ", global
FIN


Algoritmo 4: Visualizar los n primeros números primos (n se introduce por teclado, usar una variable booleana para comprobar si el numero es primo)

Datos: cond, cont, n, a, primos

Algoritmo:

INICIO
   primos = 0
   VISUALIZAR "Introduzca n"
   LEER n
   MIENTRAS primos < n
       cont = 0, cond = true
       MIENTRAS cond = true
           cont = cont + 1
           SI cont % a = 0
               cond = false
           FIN SI
       FIN MIENTRAS
       SI cont == a
           VISUALIZAR a
           primos = primos + 1
       FIN SI
       a = a +1
   FIN MIENTRAS
FIN


Algoritmo 5: En una hurna hay 80 bolas numeradas del 1 al 80 se extrae una bola y el numero se introduce por teclado devolviendo de nuevo la bola a la hurna el proceso se repite hasta que aparezca 3 veces el numero 33. Hacer un programa que utilice cuantas veces ha salido cada una. (usar tablas)

DATOS: numeros (80)
bola, cont; nºentero.

Algoritmo:

INICIO
   MIENTRAS numeros(33) < 3
       VISUALIZAR "Introduzca el número de bola"
       LEER bola
       numeros(bola) = numeros(bola) + 1
   FIN MIENTRAS
   PARA cont = 1 HASTA 80
       VISUALIZAR "Número de ", bola, "que salieron: ", numeros(bola)
   FIN PARA
FIN


Algoritmo 6: Un almacén dispone de 8 departamentos numerados del 1 al 8 destinados a contener una serie de piezas. Las piezas están numeradas del 0 al 8 éstas llegan de una en una depositándose en el departamento del mismo número. Hacer un algoritmo que determine cuantas piezas hay en cada departamento después del suministro, el suministro termina al llegar la pieza numero 0, puede ocurrir que llegue una pieza no comprendida en el rango establecido con lo cual se debera visualizar el mensaje pieza número..... es incorrecta. Inicialmente no hay piezas en los departamentos.

DATOS: deps (8*9)
pieza, dep; nºentero

INICIO
   VISUALIZAR "Introduzca pieza y departamento"
   LEER pieza, dep
   MIENTRAS pieza != 0
       SI pieza < 0 == 1 OR pieza > 0 == 1
           VISUALIZAR "Pieza número ", pieza, "es incorrecta"
       SINO
           deps(dep,pieza) = deps(dep,pieza) + 1
       FIN SI
       VISUALIZAR "Introduzca pieza y departamento"
       LEER pieza, dep
   FIN MIENTRAS
   PARA dep = 1 HASTA 8
       PARA pieza = 0 HASTA 8
           VISUALIZAR "Departamento: ", dep, "Pieza: ", pieza, "Cantidad: ", deps(dep,pieza)
       FIN PARA
   FIN PARA
FIN


Algoritmo 7: Una distribuidora de piezas de motor dispone de 3 almacenes para almacenar 4 piezas distintas, el número de piezas por almacén se representan mediante una matriz de 4x3 denominada inventario, también dispone de un vector con los costes de cada pieza, diseñar un algoritmo que permita calcular:

a) El valor que tiene cada almacén, teniendo en cuenta cada pieza
b) El valor del que dispone cada almacén, teniendo en cuenta todas las piezas.
c) El valor total de cada pieza en todos los almacenes
d) El valor total general

Suponer que la matriz inventario y el vector de costes ya están introducidos anteriormente


Resolución 1 (Larga y menos eficiente, pero mucho más simple de interpretar)

INICIO
//Resolución del apartado A con dos bucles para.
PARA y=1 HASTA 3
PARA x=1 HASTA 4
VISUALIZAR "El valor de pieza",x,"en almacén",y,"es",(inventario(x,y)*coste(x))
FIN PARA
FIN PARA
//Resolución del apartado B con dos bucles para.
PARA y=1 HASTA 3
tgt=0
PARA x=1 HASTA 4
tgt=tgt+(inventario(x,y)*coste(x))
FIN PARA
VISUALIZAR "El valor de almacén",y,"es",tgt
FIN PARA
//Resolución del apartado C con dos bucles para
PARA x=1 HASTA 4
tgt=0
PARA y=1 HASTA 3
tgt=tgt+(inventario(x,y)*coste(x))
FIN PARA
VISUALIZAR "El valor de piezas",x,"es",tgt
FIN PARA
//Resolución del apartado D con dos bucles para
sup=0
PARA y=1 HASTA 3
tgt=0
PARA x=1 HASTA 4
tgt=tgt+(inventario(x,y)*coste(x))
FIN PARA
sup=sup+tgt
FIN PARA
VISUALIZAR "Valor global es",sup
FIN


Resolución 2 (Búsqueda de la máxima eficiencia y el menor tamaño posible)

INICIO
//Resolución de los apartados A, B y D en el mismo bucle PARA
PARA y=1 HASTA 3
tgt=0
PARA x=1 HASTA 4
part = inventario(x,y)*costes(x)
VISUALIZAR "Valor de pieza",x,"en almacén",y,"es",part
tgt = tgt + part
FIN PARA
sup = sup + tgt
VISUALIZAR "Valor total de almacén",y,"es",tgt
FIN PARA
VISUALIZAR "Valor total global",sup
//Resolución del apartado C en otros dos bucles PARA, ya que
//en esta es necesario colocarlos de forma inversa.
PARA x=1 HASTA 4
tgt=0
PARA Y=1 HASTA 3
tgt = tgt + (inventario(x,y)*coste(x))
FIN PARA
VISUALIZAR "El valor de piezas",x,"es",tgt
FIN PARA
FIN
#78
Hola, siempre he oído hablar sobre Debian, y me pareció interesante probarlo, pero nunca me animé, por miedo a que fuese muy complicado.

Me gustaría intentar instalarlo en mi PC, pero no tengo muy claro cómo va la cosa.
Así que tengo un par de dudas:

1- Puedo instalar Debian en Dual-Boot conjunto a Win7?
2- Tuve problemas de compatibilidad con Ubuntu. Tendría estos problemas con Debian?
Me podrían orientar un poco con el proceso de instalación?

Les dejo un poco de información sobre mi PC (espero que sea suficiente para resolver mis dudas).

Gráfica: ATI Radeon HD 4650 (la que me dió problemas de compatibilidad con Ubuntu)
Procesador: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz
Placa Madre: Medion MS-7366
RAM: 4 memorias de 1024Mb cada una. (Soportan SIMM, DIMM y SDRAM)
#79
No es la primera vez que me equivoco, y luego no puedo borrar lo que acabo de postear.

Qué tal un botón de borrar post? (claramente, solo se podría borrar el último post, y solo si es propio)
#80
Desafíos - Wargames / DarkSignsOnline 2!
9 Junio 2010, 08:55 AM
Fijo que algunos de ustedes se acuerdan del clásico DarkSigns, y de su secuela DarkSignsOnline. Pues ahora, estamos trabajando en una nueva versión: DarkSignsOnline2! Este va a ser multi-plataforma, ya que va a estar escrito mayoritariamente en C++.

Todavía no hay mucho hecho, pero si os interesa, echadle un vistazo. :D
http://darksigns.net/

Todavía no hay mucha gente apuntada, pero los desarrolladores solemos conectarnos al canal IRC #DarkSigns, en freenode. (Posiblemente metamos un webclient en el site, para haceros la vida más fácil)
Claramente, hay que saber un poquito de inglés, creo que yo soy el único que habla español ahi. (De momento ^w^)
#81
Hola, estaba interesado en grabar partidas de la Play Station 1, como si fuese un replay, pero no dispongo de una cámara, mi duda es, si hay algún cable/conector/adaptador que pueda usar para que el PC reciba tanto la imagen como el sonido, y en caso afirmativo cuales son y qué software puedo usar para grabarlo.

Muchas gracias por adelantado.
#82
Pues, eso, tenía interés en descompilar un .bin, sólo para echarle un vistazo a la fuente del firmware de mi router.

Qué herramientas me aconsejáis? He estado mirando por ahí, y ponía que a veces se puede hacer con un debugger como Ollydbg, pero no fuí capaz de abrirlo así.
#83
Windows / Problemas con la webcam
4 Junio 2010, 10:57 AM
ODIO Windows 7, NADA es compatible...

Esta vez, mi problema es con una genius webcam eye v2.0 haga lo que haga, la imagen me sale en negro, ya probé de buscar drivers para windows 7, de ponerlo en modo compatibilidad... Nada funciona, qué puedo hacer?
#84


Cómo lo arreglo?

*sigh* Windows XP nunca me hizo payasadas como esa...
#85
Windows / Atajo de teclado WMP? (Reproducir)
24 Mayo 2010, 22:07 PM
En mi PC antiguo (WinXP) tenía una tecla en el teclado solo para pausar/reproducir, pero éste no la trae.
Lo usaba a menudo, para no tener que minimizar los juegos para pausar la música.

He estado mirando, y ví que el atajo de teclado para el WMP del Win7 es Ctrl+P, pero sólo funciona si tengo seleccionada la ventana del mismo así que no me vale.
Hay alguna alternativa? Cómo podría definir un atajo de teclado que diese la orden de pausar/reproducir?

Descartad que pruebe con el teclado viejo, ya fallaba mucho, así que no es una opción.
#86
Se supone que tengo que registrarme en freenode... Pero ya llevo tiempo registrado...

Ayuda por favor. Tampoco consigo vincular la cuenta de freenode con el foro...
#87




#88
Windows / [Aportación] Temas de Windows
9 Mayo 2010, 15:17 PM
Estaba insipirado y decidí compartir con ustedes los temas de escritorio que he creado a lo largo de los tiempos: ^^

Tema de escritorio de uso exclusivo para windows 98/XP:

Skynet Theme: Tema de escritorio con colores que recuerdan a Matrix, y a nuestras queridas líneas de comando de color verde ^^. Basado en los típicos colores conocidos como "Poison" (Veneno) éste tema me resultó ideal para uso prolongado del PC en ambientes mal iluminados.

Tengo oído que estos colores suponen un ahorro y prolongación de la vida útil del monitor de uso al haber mucha área de pantalla de color negro.
Una vez te acostumbras, os aseguro que también elimina mucho cansancio ocular.

Link de descarga: Skynet Theme

Temas de escritorio de uso exclusivo para windows7:

Poison Theme: (Beta 6) Todavía estoy trabajando en este, se supone que es una adaptación de "Skynet Theme" para Win7, este theme tiene todo lo bueno de skynet, más la novedad de que también se aplica en mayor número de aplicaciones e incluso algunos navegadores web! (Lo que implica que tendréis un tema exclusivo en el foro ^^ (Lo veréis a lo Skynet Theme ^^).
Tengo que mirar a ver si puedo solucionar un pequeño problema con los links, que salen en azul y cuesta un poquito verlos. (Esto no pasaba con el Skynet de XP, porque no se aplicaba al navegador (o apenas).

Nota: Si usáis Firefox, este persona viene de miedo, (o similares): http://www.getpersonas.com/es/persona/2222

Link de descarga: Poison Theme

Consolas Rapid: Si esos colores anteriores no os gustaron, no pasa nada! También hice un Theme con colores mas "amistosos".
Consolas Rapid es un tema simple, liviano para la vista de los que no se adaptan a skynet, ya que usa colores más estándar.

La particularidad de este theme es que el color del fondo de escritorio va cambiando de vez en cuando, aplicadlo y vigilad vuestro desktop un ratito. ^^

Link de descarga: Consolas Rapid Theme

--

Disclaimer: No me responsabilizo de los problemas de compatibilidad de los temas "Poison" y "Skynet".

Si alguna aplicación/web os sale con letras negras sobre fondo negro (no se ve nada) no es culpa mía, sino del diseñador de dicha aplicación/web por no poner el color "por defecto" (adaptable), y en vez de eso poner negro (que fuerza el negro sobre el fondo negro si se usa este theme).

Si tenéis algún problema para visualizar alguna aplicación por este motivo, os aconsejo usar un tema de escritorio que tenga otra combinación de colores, tales como el vuestro de siempre (del cual os aconsejo guardar un backup antes de aplicar los míos), los estándar de windows, o Consolas Rapid. ^^

Hasta a mí me hace falta cambiar de theme a veces para visualizar bien alguna aplicación!

--

Y, por favor, recordad que me encantan las críticas, siempre que sean constuctivas, no os cortéis si creéis que vuestra crítica puede ayudarme a mejorar.

--

EDIT: Un par de screenshots:

Poison Theme:


Consolas Theme:


--
EDIT:

Un nuevo tema. Especial para los fans de Gurren Lagann!

Kamina Theme
#89
Seguridad / Novell BorderManager
7 Mayo 2010, 16:11 PM
Bueno, este año he cambiado de colegio, en el anterior podía enredar sin gran dificultad en los ordenadores de la sala de informática...
Ahora en este otro colegio, me encuentro con que usan "Novell BorderManager".

La usabilidad de las máquinas es muy limitada cuando está activado, pero si arranco cmd y uso taskkill para cerrar el proceso, puedo enredar todo lo que quiera...
Mi duda es, sigue la actividad siendo logeada? O simplemente al terminar el proceso (no sé si tiene más procesos relacionados), ya es suficiente como para usar el equipo sin ataduras?

Según nuestro profesor, él está monitorizando desde su PC lo que estamos haciendo constantemente... Pero no me lo parece así cuando pude cerrar el proceso sin problema...
Se estará haciendo el sueco? O simplemente miente cuando dice que nos tiene vigilados?
#90
Hola, tengo un problema, y necesitaría una solución rápida.

Un amigo de mi padre, que no dispone de internet, necesita instalarse Java para hacer ciertas cosas, pero el instalador que encontré en la web de java, es uno de esos instaladores que requieren conexión a internet. Lo malo, es que no me dí cuenta de ello al momento, así que le pasé el instalador, y ahora mi padre está cabreado conmigo porque "no lo hice bien".

Alguien puede decirme dónde puedo conseguir un instalador (actualizado) de java que no requiera conexión a internet para instalarlo?