miércoles, 26 de mayo de 2010

C # :: Ingresar "N" número de Nombres y Ordenarlos Alfabeticamente

Aqui les dejo el codigo fuente de una aplicacion que al ingresar "N" nombres por consola, debera comparar las cadenas de texto para su ordenación Alfabetica. Usando Arrays, Metodos, Constructor, Objeto, etc.. (Nota: Lo he hecho en Visual Studio 2010.)
Variables: pnomb="Primer Nombre" y apepat="Apellido Paterno"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using c = System.Console;
/*Creacion de KehackSoft
*más códigos en www.zvipuapica.blogspot.com
*/

namespace ejercicio1

{

class ejercicio2

{

string[] pnomb;

string[] apepat;

int num;

ejercicio2(int nume)

{

num = nume;

pnomb=new string[num];

apepat=new string[num];

}

void Ingreso()

{

for (int i = 0; i <num;i++)

{

c.WriteLine("");

c.WriteLine("Ingresa Primer Nombre");

pnomb[i] = c.ReadLine();

c.WriteLine("Ingresa Apellido Paterno");

apepat[i] = c.ReadLine();

c.WriteLine("");

}

}

//SE HACEN EL CAMBIO DE VARIABLES PARA ORDENAR ALFABETICAMENTE LOS NOMBRES

void ordena()

{

String auxNom,auxAp ;

for (int i = 0; i <n-1;i++)

{

for (int j = i + 1; j <n;j++)

{

if (pnomb[i].CompareTo(pnomb[j])>0)

{

auxNom = pnomb[i];

auxAp = apepat[i];

pnomb[i] = pnomb[j];

apepat[i]=apepat[j];

pnomb[j] = auxNom;

apepat[j] = auxAp;

}

}

}

}

void mostrar()

{

c.WriteLine("");

c.WriteLine("");

c.WriteLine("Lista de Nombres Ordenados.");

c.WriteLine("--------------------------");

c.WriteLine("");

for (int i = 0; i <n;i++)

{

c.WriteLine((i+1)+") {0} {1}",pnomb[i],apepat[i]);

}

}

void continuar()

{

c.WriteLine("¿Desea Continuar?---- SI-NO");

String rsp = c.ReadLine();

if (rsp == "SI")

{

c.Clear();

Main();

}

else

{

c.WriteLine("");

c.WriteLine("Nos vemos...!");

}

}

static void Main()

{

c.WriteLine("Ingresa la Cantidad de Alumnos");

int num = int.Parse(c.ReadLine());

ejercicio2 a = new ejercicio2(num);

a.Ingreso();

a.ordena();

a.mostrar();

a.continuar();

c.ReadLine();

}

}

}


sábado, 22 de mayo de 2010

Ejercicios en Java

Ejercicio 1

Resolver una ecuación de segundo grado y realizar una serie de cálculos con sus soluciones reales, tomando como punto de partida el siguiente código comentado:

Por consola:

Las soluciones son: -0.5657414540893352 y -1.7675918792439982

Solucion mayor: -0.5657414540893352

La exponencial elevada a la solucion mayor vale: 0.5679388899930863

El coseno de la solucion menor vale: -0.19552774420923652

Soluciones redondeadas hasta cuatro decimales: -0.5657 y -1.7676

El arcoseno de la solucion mayor en radianes: -0.601332163575292

El arcoseno de la solucion mayor en grados sexagesimales: -34.453795058334684


Ejercicio 2

A) Dado el siguiente código, averiguar si va a producirse error de compilación.

Si consideras que se produce dicho error, indicar la causa.

Si consideras que la compilación se realiza con éxito, indicar qué se mostrará por consola al ejecutarlo.

B) Si se elimina el modificador static del método mostrarEdad(..), qué modificaciones deben hacerse en el código para que se muestre por consola lo mismo.


jueves, 20 de mayo de 2010

Programillas Opcionales

PicPick 2.2.7Programa gratuito para realizar capturas de pantalla y con muchas más funciones. Se corrigen un par de bugs y se añade una nueva función.



WinZip 14.5.9095Nueva versión de este conocido compresor que añade funciones multitouch y nuevo interfaz Ribbon para ponerse a la altura de los menús de Office 2007/2010.



.NET Framework Version 4.0Versión 4 de este interprete de lenguaje .NET de Microsoft.



AbiWord 2.8.4Un procesador de textos open source que nos puede sacar de un apuro.



Process Explorer 12.02Nueva versión de este programa que nos ayuda a controlar mejor qué procesos tenemos abiertos, ideal para cazar troyanos en acción.


Java Runtime Environment 1.6.0.20Nueva actualización del intérprete de JAVA, que sale muy poco después de una actualización anterior.



Maxthon 2 2.5.12.4586 FinalNueva actualización de este navegador menos conocido que el resto de alternativas.

domingo, 16 de mayo de 2010

Alertan de que el sistema actual de direcciones IP se agotará en abril de 2012


Algunas predicciones apuntan a que en abril de 2012 se agotarán las direcciones IP ya que, según los expertos, el 9 de septiembre de 2011 se entregará el último bloque de direcciones (unos 300 millones) a las empresas de Internet para su uso y distribución.
Todo dispositivo necesita de una dirección IP para conectarse a Internet y asegurarse de que los datos llegarán al destino adecuado. Por eso, de estas direcciones depende la expansión de la Red.
Según recuerda la BBC, la red se ha desarrollado en torno a la versión cuatro del esquema de direccionamiento del Protocolo de Internet (IPv4), que tiene espacio para unos 4.000 millones de direcciones IP.
Si bien esta cantidad fue suficiente cuando la red comenzó a establecerse, con el rápido crecimiento de la World Wide Web (www), las reservas se han ido agotando y ha sido necesario adoptar un nuevo esquema de direccionamiento, IPv6, que dispone de billones de direcciones disponibles; sin embargo, muchas empresas y países aún no lo han adoptado.
Según el director de tecnología de la empresa de servicios de Internet (ISP) Timico, Trefor Davies, aunque las direcciones IPv4 e IPv6 pueden existir al mismo tiempo, "no se trata de una unión libre de problemas", ya que la traducción de una dirección al formato de la otra produce un retraso "significativo".



Protocolo de Internet
El protocolo de Internet (IP) es un conjunto de normas técnicas que define cómo los dispositivos se comunican a través de la Red. En este momento hay dos versiones de IP, IPv4 e IPv6, y esta última incluye un rango de números muchísimo mayor que la primera. El problema es que son incompatibles entre sí: los sitios 'visibles' en una versión no lo son en la otra, y viceversa.
Las direcciones IP son asignadas por la ICANN, que las distribuye entre los cinco Registros Regionales de Internet (RIR). Estos, a su vez, los asignan a los usuarios en sus respectivas regiones.



Un poco de historia
En los años 70, los creadores del protocolo de Internet se apoyaron en un sistema de 32 bits capaz de generar más de 4.200 millones de direcciones. Esta versión es la llamada IPv4.
La cifra parecía entonces suficiente. Sin embargo, con la incorporación masiva no sólo de internautas, sino también de máquinas, conectados todos a la Red, la lista de números disponibles se está acabando.
El IPv6 es la solución, una respuesta de la industria a la futura necesidad de un mayor número de direcciones de protocolos de Internet. En IPv6, las direcciones pasan de los 32 a 128 bits, o sea de 2 elevado a 32 direcciones (4.294.967.296) a 2 elevado a 128 direcciones (sobre 1.000 sixtillones).
Este elevadísimo número de direcciones IP será el que haga posible que todos los dispositivos actuales o futuros (ordenadores, teléfonos, máquinas de vending, cámaras de seguridad, neveras, lavadoras, etc.) puedan tener conectividad a Internet.

viernes, 14 de mayo de 2010

EL LOGO DE GOOGLE CREADO CON 884 FOTOGRAFÍAS

PROYECTO WHILE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoWhile
{
class AplicacionWhile
{
const int MIN = 1;
const int MAX = 10;
const string QUIT_CHAR = "Q";

static void Main(string[] args)
{
Random rnd = new Random();
double NumeroCorrecto;

string ingreso;
int userGuess;

bool GuessCorrecto = false;
bool userQuit = false;

while(!GuessCorrecto && !userQuit){
NumeroCorrecto = rnd.NextDouble()*MAX;
NumeroCorrecto = Math.Round(NumeroCorrecto);

Console.Write("Adivine un número entre {0} y {1}... ({2} para salir)",MIN,MAX,QUIT_CHAR);
ingreso = Console.ReadLine();

if (0 == String.Compare(ingreso, QUIT_CHAR, true))
userQuit = true;
else
{
userGuess = Convert.ToInt32(ingreso);
GuessCorrecto=(userGuess==NumeroCorrecto);

Console.WriteLine("El número correcto era {0}\n",NumeroCorrecto);
}
}
if (GuessCorrecto && !userQuit)
{
Console.WriteLine("Felicidades!!!");
}
else
{
Console.WriteLine("QUizás la próxima vez será¡¡¡¡");
}
Console.ReadLine();
}
}
}

PROYECTO SWITCH

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoSwitch
{
enum Tenders : int
{
Cash=1,
Visa,
MasterCard,
AmericanExpress
};
class Pago
{
protected Tenders tender;
public Pago(Tenders tender)
{
this.Tender = tender;
}
public Tenders Tender
{
get
{
return this.tender;
}
set
{
this.tender = value;
}
}
public void ProcesaPago()
{
switch ((int)(this.tender))
{
case (int)Tenders.Cash:
Console.WriteLine("\nEfectivo - Aceptado");
break;
case (int)Tenders.Visa:
Console.WriteLine("\nVisa - Aceptada");
break;
case (int)Tenders.MasterCard:
Console.WriteLine("\nMastercard - Aceptada");
break;
case (int)Tenders.AmericanExpress:
Console.WriteLine("\nAmerican Express - Aceptada");
break;
default:
Console.WriteLine("\nLo sentimos - Medio de pago inválido");
break;
}
}
}
class AplicacionSwitch
{
static void Main(string[] args)
{
Pago p1 = new Pago(Tenders.Visa);
p1.ProcesaPago();
Console.ReadLine();
}
}
}

PROYECTO SENTENCIA IF MULTIPLE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace proyectoSentenciaIfMultiple
{
class IfMultiple
{
const string C = "C++";
const string VisualBasic = "Visual Basic";
const string Java = "Java";

static void Main(string[] args)
{
Console.Write("¿Cuál es su lenguaje preferido (excluyendo C#)?");
string ingreso = Console.ReadLine();
if (0 == String.Compare(ingreso, C, true))
{
Console.WriteLine("\nNo tendrá problemas si utiliza C#!");
}
else if (0 == String.Compare(ingreso, VisualBasic, true))
{
Console.WriteLine("\nEncontrarás muchas caracteristicas interesantes de VB en C#!");
}
else if (0 == String.Compare(ingreso, Java, true))
{
Console.WriteLine("\nLe será muy fácil aprender C#!!!");
}
else
{
Console.WriteLine("\nLo sentimos, no computable!!!");
}
Console.ReadLine();
}
}
}

PROYECTO ORDENACION

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectOrdenacion
{
class Alumno
{
int n;
int []Notas;
String[] Nombre;
Alumno(int p) {
n = p;
Notas = new int[n];
Nombre = new String[n];
}
public void Ingreso() {
for (int i = 0; i < n; i++)
{
Console.WriteLine("Alumno{0}: ",(i+1));
Nombre[i] = Console.ReadLine();
Console.WriteLine("Nota:");
Notas[i] = int.Parse(Console.ReadLine ());
}
}
public void OrdenarBurbuja() {
int aux;
String auxNom;
for (int i = 0; i < n-1;i++ )
{
for (int j = i+1; j < n;j++ )
{
if (Notas[j] > Notas[i])
{
aux = Notas[i];
Notas[i] = Notas[j];
Notas[j] = aux;
auxNom = Nombre[i];
Nombre[i] = Nombre[j];
Nombre[j] = auxNom;
}
}
}
}
public void Mostrar()
{
Console.WriteLine ("NOMBRE\tNOTA");
for (int i=0;i Console.WriteLine("{0}\t{1}",Nombre[i],Notas [i]);
Console.WriteLine("Pulse una tecla para continuar.");
Console.ReadKey();
}
static void Main(string[] args)
{
int a;
Console.WriteLine("Ingrese cantidad alumnos:");
a = int.Parse(Console.ReadLine());
Alumno a1=new Alumno (a);
a1.Ingreso();
a1.Mostrar();
a1.OrdenarBurbuja();
a1.Mostrar();
Console.ReadLine();
}
}
}

PROYECTO IF

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoIf
{
interface ITest
{
}
class TestClass : ITest
{
}
class IfValido
{
protected static TestClass GetTestClass()
{
return new TestClass();
}
public static void Main(string[] args)
{
int foo = 1;
if (foo > 0)
{
}
TestClass t = new TestClass();
if (t != null)
{
Console.WriteLine("{0}",t);
ITest i = t as ITest;
if (i != null)
{
//métodos ITest
}
}
Console.ReadLine();
}
}
}

PROYECTO FOREACH

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ProyectoForEach
{
class MyArray
{
public ArrayList palabras;

public MyArray(){
palabras = new ArrayList();
palabras.Add("foo");
palabras.Add("bar");
palabras.Add("baz");
}
}
class AplicacionForEach
{
static void Main(string[] args)
{
MyArray a1 = new MyArray();

//for (int i = 0; i < a1.palabras.Count; i++)
foreach (string palab in a1.palabras)
{
Console.WriteLine("{0}",palab);
}
Console.ReadLine();
}
}
}

PROYECTO FOR

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoFor
{
class AplicacionFor
{
const int CarInicio = 33;
const int CarFin = 125;
const int CarXLinea = 3;

static void Main(string[] args)
{
for (int i = CarInicio; i <= CarFin; i+=CarXLinea)
{
for (int j = 0; j < CarXLinea; j++)
{
Console.Write("{0} = {1}", i+j, (char)(i+j));
}
Console.WriteLine("");
}
Console.ReadLine();
}
}
}

PROYECTO CONTINUE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ProyectoContinue
{
class MyArray
{
public ArrayList palabras;

public MyArray()
{
palabras = new ArrayList();
palabras.Add("hola");
palabras.Add("buenos dias");
palabras.Add("buenos tardes");
palabras.Add("buenos noches");
palabras.Add("adiós");
palabras.Add("que te vaya bien");
}
}
class AplicacionContinue
{
static void Main(string[] args)
{
MyArray m1 = new MyArray();
ArrayList a1 = new ArrayList();
Console.WriteLine("Procesando el array...");
for (int i = 0; i < m1.palabras.Count; i++) {
for (int j = 0; j < m1.palabras.Count;j++ )
{
if (i == j) continue;
if (m1.palabras[i] == m1.palabras[j] && !a1.Contains(j))
{
a1.Add(i);
Console.WriteLine("'{0}' aparece en las líneas {1} y {2}",m1.palabras[i],i+1,j+1);
}
}
}
Console.WriteLine("Se encontraron {0} duplicados",(a1.Count>0)?a1.Count.ToString():"no");
Console.ReadLine();
}
}
}

PROYECTO COMA 2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoComa2
{
class AplicacionOperadorComa2
{
const int CarIni = 33;
const int CarFin = 125;

const int CarXLinea = 3;
const int NewLine = 13;
const int espacio = 32;

static void Main(string[] args)
{
for (int i = CarIni, extra = espacio;
i <= CarFin;
i++, extra =((0==(i-(CarIni-1)%CarXLinea)
? NewLine : espacio)))
{
Console.Write("{0} = {1} {2}",i, (char)i, (char)extra);
}
Console.ReadLine();
}
}
}

PROYECTO COMA 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProyectoComa
{
class AplicacionOperadorComa
{
const int CarInicio = 33;
const int CarFin = 125;

const int CarXLinea = 3;

static void Main(string[] args)
{
for (int i = CarInicio, j = 1; i <= CarFin;i++,j++ )
{
Console.Write("{0} = {1}",i, (char)i);
if(0==(j%CarXLinea))
{
//Nueva línea si j es divisible por 3
Console.WriteLine("");
}
}
Console.ReadLine();
}
}
}

PROYECTO BREAK

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;

namespace ProyectoBreak
{
class AplicacionBucleInfinito
{
const int MIN = 1;
const int MAX = 10;
const string CarSALIR = "Q";

static void Main(string[] args)
{
Random rnd = new Random();
double numeroCorrecto;

string ingreso;
int userGuess;

bool correctGuess = false;
bool userQuit = false;

while(true){
numeroCorrecto = rnd.NextDouble()*MAX;
numeroCorrecto = Math.Round(numeroCorrecto);
Console.Write("Adivine un número entre {0} y {1} ... ({2} para salir)",MIN,MAX,CarSALIR);
ingreso = Console.ReadLine();
if (0 == String.Compare(ingreso, CarSALIR, true))
{
userQuit = true;
break;
}
else {
userGuess = Convert.ToInt32(ingreso);
correctGuess=(userGuess==numeroCorrecto);
if ((correctGuess = (userGuess == numeroCorrecto)))
{
break;
}
else {
Console.WriteLine("El número correcto era {0}\n",numeroCorrecto);
}
}
}
if (correctGuess && !userQuit)
{
Console.WriteLine("¡FELICIDADES¡");
}
else {
Console.WriteLine("¡Quizás para la próxima vez¡");
}
}
}
}

lunes, 10 de mayo de 2010

¿Quieres Crear tu Propio Troyano?

Por lo que he podido leer, los amigos de Panda Research han descubierto un kit de creación de troyanos, llamado Pinch. Este tipo de producto es, de algún modo, continuista con lo acontecido con los phishing kits, donde algunos grupos organizados se lucraron acercando al usuario de a pie la creación de ataques phishing.
En este caso, se trata de brindar al usuario la creación de troyanos sin necesidad de ser un experto en malware. Pinch permite la creación de bichos en los que se puede personalizar la acción a tomar, someterlo a packing para dificultar su detección y desensamblado y hasta, si así lo deseamos, especificar acciones determinadas, como apagar motores antivirus en el equipo del usuario.
Pinch viene con un parser que permite leer los logs que deja el troyano, para que de este modo, el usuario complete el ciclo del robo de credenciales tranquilamente. Tenéis todos los detalles de funcionamiento, así como más capturas de pantalla, en el artículo
Pinch, The Trojan Creator.
Absolutamente lamentable, pero de los criminales que pululan por la red no podíamos esperar nada bueno. No me extrañaría nada que a algún idiota con ganas de sentirse Rey Midas le vendan kits de creación de troyanos que lo único que hagan sea troyanizar sus propias máquinas, dejándoles sin lo invertido en el kit, y de paso, sin el remanente de sus cuentas bancarias :)
Saludos,

jueves, 6 de mayo de 2010

Convertir de Segundos Ingresados por Consola a Horas-Minutos y Segundos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/*KEHACKSOFT ZVIPUAPICA.BLOGSPOT.COM */
using c = System.Console;

namespace Practicando1
{

public class pgr1
{
int ing = 0;
int horas = 0;
int minutos = 0;
int segundos=0;
void hora()
{
horas = (int)ing / 3600;
}
void minuto()
{
minutos = (int)(ing * 0.0166666666666667) % 60;
}
void segundo()
{
segundos = (int)ing % 60;
}
void salida()
{
c.WriteLine("{0} Segundos Equivalen a {1} Horas {2} Minutos y {3} Segundos", ing, horas, minutos, segundos);
}
void ingreso()
{
try
{
c.WriteLine("Ingresa una Cantidad en Segundos");
ing = int.Parse(c.ReadLine());
}
catch (Exception e) { c.WriteLine("Error..." + e); }
}
void reingresar()
{
try
{
c.WriteLine("Desea Volver a Ingresar? SI=S NO=N");
string rsp = c.ReadLine();
switch (rsp)
{
case "S": c.Clear();
pgr1.Main();
break;
case "N": c.WriteLine("ADIOS!.... Pulsa enter para Salir");
c.ReadLine();
break;
default: c.WriteLine("Error! No ha ingresado valor correcto!");
break;
}


}
catch (Exception e) { c.WriteLine("Error..." + e); }
}

static void Main()
{
try
{
c.Title = "Ingreso de Seungos :: Salida Horas Minutos y Segundos!";
pgr1 prog1 = new pgr1();
prog1.ingreso();
prog1.hora();
prog1.minuto();
prog1.segundo();
prog1.salida();
prog1.reingresar();
}
catch (Exception e){ c.WriteLine("Error..."+e);}
}

}
}