Estrellamos el menu (on = habilitado y off=inhabilitado[proximamente]) .. Sigue Mandando tus susper mensajitos....en guate-->. claro tigo telefonica

Buscar

¡Haga de esta pagina su inicial!

Sitios Encontrados

martes, 28 de abril de 2009

Arreglos de multiples subindices

Estos tambien son llamados Arreglos Multidimensionales, tanton en C++ como en C# pueden tener multiples subindices.Un uso comun es la representacion de tablas de valores que consisten en informacion ordenada en filas y columnas.Para identificar un elemento en particular de una tabla, debemos especificar dos subindices:El primero (por convencion) identificar la fila del elemento y el segundo(tambien por convencion), su columna.
Las tablas o arreglos que requieren de dos subindices para identificar un elemento en particular se llama arreglo de doble subindice. Note que los arreglos de multiple subindice pueden tener mas de dos subindices.
C# se aleja significativamente de C++ en lo que respecta a los arrays multidimensionales, dado que C# soportatanto arrays rectangulares como rasgados.
Un array rectangular es una verdadera rejilla de elementos. En C#, esto se indica mediante una sintaxis en laque las comas separan la cantidad de elementos de cada dimensión o rango. Por ejemplo, un array rectangular de dos dimensiones podría definirse de la siguiente forma:
int [,] MyArray2d;
MyArray2d = new int[2,3] { {1, 0}, {3, 6}, {9, 12} }; // C#
Esta sintaxis no es más que una extensión bastante intuitiva de la sintaxis para los arrays de una dimensión. La lista de inicialización en el código anterior podría estar ausente. Por ejemplo:
int [,,] MyArray3d = new int[2,3,2]; // C#
Esto hará que el constructor por defecto sea llamado para cada elemento, inicializando cada int a cero. En este ejemplo particular, estamos ilustrando la creación de un array de tres dimensiones. La cantidad total de elementos en el array es de 2 x 3 x 2 = 12. La característica básica de los arrays rectangulares es que cada filatiene la misma cantidad de elementos.
A los elementos de arrays rectangulares se accede utilizando una sintaxis similar:
int X = MyArray3d[1,2,0] + MyArray2d[0,1]; //C#
Los arrays rectangulares de C# no tienen contrapartida directa en C++. Los arrays rasgados de C#, sinembargo, se corresponden bastante directamente con los arrays multidimensionales de C++. Por ejemplo, siUd. declara el siguiente array en C++:
int MyCppArray[3][5]; //C++
Lo que está declarando no es un array de 3x5, sino un array de arrays – un array de tamaño 3, cada uno decuyos elementos es a su vez un array de tamaño 5. Esto se ve más claramente en el caso de un array alojado enmemoria dinámica. En ese caso deberíamos escribir:
int pMyCppArray = new int[3];
for (int i=0 ; i<3> ; i++)
pMyCppArray[i] = new int[5]; //C++
Debe quedar claro de este código que no hay razón alguna para que cada fila contenga la misma cantidad de elementos (aunque eso es lo que ocurre en el ejemplo). Como ejemplo de array rasgado en C++, que realmentecontiene una cantidad de elementos diferente en cada fila, podríamos escribir:
int pMyCppArray = new int[3];
for (int i=0 ; i<3> ; i++)
pMyCppArray[i] = new int[2*i + 2]; //C++
Las filas respectivas de este array tienen dimensiones 2, 4 y 6.C# obtiene el mismo resultado de un modo muy similar, aunque en el caso de C#, la sintaxis indica la cantidadde dimensiones de forma más explícita:
int [][] MyJaggedArray = new int[3][];
for (int i=0 ; <3> ; i++)
MyJaggedArray[i] = new int[2*i + 2]; //C#
Para el acceso a los elementos de un array rasgado se utiliza la misma sintaxis que en C++:
int X = MyJaggedArray[1][3];
Aquí hemos mostrado un array rasgado de rango 2. Sin embargo, del mismo modo que en C++, Ud. puededefinir un array rasgado con tantas dimensiones como desee – sólo tiene que añadir más corchetes a ladefinición.
para C++ seri asi :foto + grande para C# seri asi:foto + grande Nota : Como anecdota hoy aposte en el partido del Barcelna vrs chelsea 2009 UEFA por supesto nunca conte con un empate {0-0},so el pozo de apuestas se hizo mas grande.. que eperar.(nervios++) .....ojala gane el el barca [por siempre ForCa Barca]...jjaja

viernes, 24 de abril de 2009

Busqueda binaria en un arreglo

Esta busqueda elimina, tras cada comparacion, la mitad de los elementos del arreglo en los que se efectua la busqueda. Primero localiza el elemento central del arreglo y luego lo compara con la clave de busqueda. Si son iguales, se ha encontrado dicha clave y se devuelve el subindice de ese elemento. De otro modo, el problema se reduce buscar en una mitad del arreglo. Si la clave de busqueda es menor que el elmento central del arreglo, se busca en la primera mitad; de otro modo, se busca en la segunda mitad. Si la clave de busqueda no esta en el elemento central del subarreglo especificado (parte del arreglo original), se repite el algoritmo en una cuarta parte del arreglo original. La busqueda continua hasta que la clave de busqueda sea igual al elemento central de un subarreglo o hasta que que el subarreglo consista de un elemento, el cual no es igual ala clave de busqueda(esdecir, no se encuentra la clave de busqueda).
En el peor caso, la busqueda en un erreglo de 1024 elementos solo se llevaras 10 comparaciones mediante la busqueda binaria. La division repetida de 124 entre 2 (dado que tras cada comparacion se puede descartar lamitad del arreglo) nos da los valores 512, 256, 128, 64, 32, 16, 8, 4, 2 y 1. La division entre 2 es quivalente a una comparacion en el algoritmo de busqueda binaria.
El siguiente ejemplo presenta la version iterativa de la funcion (bynarySearch). La funcion recibe cuatro argumentos: un arreglo "b", un entero "searchKey", el subindice "low" del arreglo y el subindice "high" del arreglo. Si la clave de busqueda no es igual al elemento de la mitad de un subarreglo, se ajusta el subindice "low" o "high" para poder hacer la busqueda en un subarreglo mas pequeño. Si la clave de busqueda es menor que el elemento central, el subindice "high" se establece a "middle-1" y se continua la busqueda en los elementos de "low a middle - 1.Si la clave de busqueda es mayor que el elemento centra, el subindice "low" se establece a "middle+ 1" y se continua la busqueda en los elementos de "middle + 1" a "high". El programa emplea un arreglo de 15 elementos. La primera potencia de 2 mayor que la cantidad de elementos de este arreglo es 16(2 ºexponente 4), por loque se necesita un maximo de cuatro comparaciones para encontrar la clave de busqueda. La funcion "printHeader" envia a la salida los subindices del arreglo y la funcion "printRow" envia a la salida cada subarreglo generado durante el proceso de busqueda binaria. El elemento central de cada subarreglo se marca con un asterisco(*), para indicar el elemento con el que se compara la clave de busqueda.
para C++ seria asi:foto + grande
para C# seria asi:foto + grande

jueves, 23 de abril de 2009

Busqueda lineal en un arreglo

Con frecuencia un programador( tu o yo) trabajara con grandes cantidades de informacion almacenada en arreglos. Podria ser necesario determinar si algun arreglo contiene un valor que sea igual a cierto valor clave. El proceso para encontrar un elemento particular en un arreglo se llama busqueda. aca estudiaremos la tecnica simple busqueda lineal que compara todos los elementos del arreglo con la clave de busqueda. Debido a que el arrreglo no esta en ningun orden en particula, existe la misma posibilidad de que el valor este en el primer elemento on en el ultimo. Por lo tanto para encontrar un valor en el arreglo, en promedio el programa debe comparar la clave de busqueda con la mitad de los elementos del arreglo. Para determinar que un valor no esta en el arreglo, el programa debe comparar la clave de busqueda con todos los elementos de dicho arreglo. El metodo de busqueda lineal funciona bien con arreglos pequeños y con los no ordenados. Sin embargo, en los arreglos mayores de busqueda lineal no es suficiente. Si el arreglo esta ordenado, se puede emplear la tecnica de busqueda binaria, que es de alta velocidad.
para C++ seria asi: foto + grande para C# seria asi:foto + grande

martes, 21 de abril de 2009

Calculo de la media, mediana y moda

Uno de los usos comunes de las computadoras es compilar y analizar los resultados de las encuestas y sondeos de opinion. El siguiente ejemplo. utiliza el arreglo "response", incializado con 99 respuestas (representadas por la varible constante "responseSize") de una ecuesta. Cada una de las respuestas es un numero de 1 al 9. El programa calcula le media, la mediana y la moda de los 99 valores.
La media: Es el promedio aritmetico de los 99 valores. La funcion "mean" calcula el promedio totalizando los 99 elementos y dividiendo el resultado entre 99;
La mediana: Es el valor medio. La funcion "median" determina la mediana llamando a la funcion "bubleSort" , que ordena el arreglo de respuestas en orden ascendente, y seleccionando el elemento central, "answare[sizq/2]", del arreglo ordenado. observe que cuando hay un numero par de elementos, la mediana debe calcularse como la media de los dos elementos centrales. La funcion "median" actualmente no ofrece esa capasidad, se llama ala funcion printArray para enviar a la salida el arreglor "responses".
La moda: es el valor que sucede con mayor frecuencia entre las 99 respuestas. La funcion "mode" cuenta el numero de respuestas de cada tipo, luego seleccciona la cifra con mayor conteo. Esta version de la funcion "mode" no maneja empates. Dicha funcion tambien genera un histograma para ayudar a determinar graficamente la moda. este ejemplo incluye la mayoria de las manipulaciones comunes necesarias para los problemas de arreglos, incluyendo el paso de arreglos a funciones.
para C++ seria asi: fot + grande
para C# seria asi: foto + grande
Nota: Seguramente has de notar que para C++ declaramos los parametros de arreglo de algunas funciones de tipo "const" {const int a[]} que especifica que el arreglo "a" es constante y no puede modificarse, esto es para evitar que el arreglo original sea modificado en el cuerpo de la funcion. Este obedece la principio de menor privilegio. A las funciones no debe darseles la capasidad de modificar arreglos, a menos que sea necesario. En C# no debemos preocuparnos de esto ya que esto es por default... bueno hata la proxima SAyonara... jaja me encanta

miércoles, 15 de abril de 2009

Ordenamiento de arreglos

El ordenamiento de informacion(es decir, la colocacion de los datos en algun orden particular; por ejemplo, ascendente o descendente) es una de las aplicaciones mas importantes de la computacion. Un banco ordena todos los cheques por numero de cuenta para poder preparar los estados de cuenta al cierre del mes. practicamente todas las organizaciones deben ordenar informacion y, en muchos casos, volumenes masivos de informacion. El ordenamiento de datos es un problema interesante que ha provocado algunos esfuerzos de investigacion mas intensas en las ciencias de la computacion. En este ejemplo estamos estudiando el esquema de ordenamiento mas sencillo que se conoce.
El siguiente ejemplo ordena los valores del arreglo de 5 elmentos a en orden ascendente & descendente. La tecnica de la que nos valemos se llama ordenamiento de burbuja u ordenamiento por hundimiento, pues los valores mas pequeños(asendente) y los valores mas grandes(descendente) gradualmente burbujean hacia la parte mas alta del arreglo como las burbujas. La tecnica es pasar varias veces por el arreglo. con cada paso, se comparan pares sucesivos de elementos.
para C++ seia asi:foto + grande
para C# seria asi:foto + grande
Nota : tanto C++ y C# tiene maneras mas elegantes de hacer los ordenamientos .

viernes, 3 de abril de 2009

Paso de arreglo a funcion

Al pasar un arreglo a una funcion, generlamente tambien se pasa su tamaño, con elfin de que la funcion pueda procesar la cantidad especifica de elementos que contiene (de otra manera, necesitariamos incluir este conocimiento en la propia funcion llamada o, peor aun poner el tamaño del arreglo e una varible global).
Tanto C++ & C# pasan automaticamente arreglo a funciones utilizando simulacion de llamadas por referencia: las funciones llamadas pueden modificar los valores de los elementos de los arreglos originales de los invocadores.
El nombre del arreglo es la direcciom de su primer elemento. Debido a que se pasa la direccion de incio del arreglo,la funcion llamada sabe con precision donde esta almacenado dicho arreglo. Por lo tanto,cuando la funcion llamada modifica elementos del arreglo en el cuerpo de la funcion, de echo esta modificando los propios elementos del arreglo, es decir sus localidades de memoria originales.
Aunque los arreglos completos se pasan simulando llamadas por referencia, los elementos individuales se pasan mediante llamadas por valor, igual como sucede con las varibles simples. Tales piezas simples de infomacion se llaman escalares o cantidades escalares. Para pasar un elemento de una arreglo a una funcion, utilice el nombre con subindice del elemento del arreglo como argumento de la llamada.
El siguiente programa muestra la diferencia entre pasar un arreglo completo y pasar un elemento del arreglo. El programa primero imprime los cinco elementos del arreglo de enteros "a". Luego "a" y su tamaño se pasan a la funcion modifyArray, donde cada uno de sus elementos es multipliacado por 2. Despues "a" se vuelve a imprimir. como lo demuestra la salida, modifyArray modifica los elementos de "a".
Ahora el programa imprime el valor de a[3] y lo pasa ala funcion modifyElement. La funcion modifyElement multiplica po 2 su argumento e imprime el nuevo valor. Observe que cuando a[3] se reimprime, no ha sido modificado, pues los elementos de los arreglos se pasan medinete llamada por valor.
Para C++ seria asi: foto + grandepara C# seria asi: foto + grande

jueves, 2 de abril de 2009

Comparacion de arreglos Static y local

Los arreglos que se declaran como static se incializan al cargar el programa.Si el programador no incializa explicitamente algun arreglo, etonces el compilador lo inicializara a cero.
El siguientes ejemplos demuestra la funcion "staticArrayInit" con un arreglo local que se declara como [static] y una funcion "automaticArrayInit" con un arreglo automatico local. la funcion "staticArrayInit" es llamada dos veces. El compilador inicializa a cero el arreglo [static] local.
La funcion imprime el arreglo, suma 5 a cada elemento e imprime de nuevo el arreglo. La segunda vez que se llama a la funcion, elarreglo [static] contiene los valores almacenados durante la primera llamada de funcion.
Tambien se llama dos veces a la funcion "automaticArrayInit", Los elementos del arreglo automatico se incializan con los valores 1,2 y3. La funcion imprime el arreglo, suma 5 a cada uno de sus elementos y lo vuelve a imprimir..
La segunda ves que se llama a la funcion, los elementos del arreglo se reinicializan a 1,2 y 3, debido a que el arreglo tiene la clase de almaceanaminto automatico local.
para C++ seia asi: foto + grande para C# seria asi: foto + grande Nota: Creo qe has de de notar que para C# declaramos la varible como {static readonly} fuera de la funcion ya que pues como toda su arquitectura esta basada en clases. Esto nos permite mayor maniobrabilidad. e implementacion de los objetos. te recomiendo utilices los diagramas en C# ya que te dan una vision mas rapida y resumida de que haces....
Bueno solo como anegdota pues mientras escribo esto veo el partido de futbol entre Argentina Y Bolivia y estrepitosamentese les esta dando sepultura al equipo de Argentina(6-1) historico...so me quede pensando esto esta fuero de limites... moraleja = existe otra dimension que nosotros no hemos explorado jajaaj.. bueno hasta la proxima...me ancanta ..jaja++;