viernes, 26 de noviembre de 2010

ARREGLOS O ARRAYS

Un array o arreglo en C++ es un grupo de instrucciones que se guardan en memoria
 
Un arreglo en C++ es un conjunto de datos que se almacenan en memoria de manera seguida con el mismo nombre. Es una colección de variables del mismo tipo, todas las variables que pertenecen a un arreglo se denominan elementos.
Para diferenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9]
Ejemplos:

EJEMPLO DE CÓDIGO DONDE SE VISUALIZA UN ARREGLO

/Uso de arreglos en C++
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
int arregloEntero[10] = {0};
//Arreglo entero de 10 elementos inicializados todos en 0.
cout << "Arreglo recien declarado: \n" << endl;
for (int i = 0 ; i < 10 ; i++)
//Notar el menor estricto (<) para ir desde 0 hasta 9
cout << "ArregloEntero["<cout << "\nIntroduzca 10 nuevos valores " << endl;
for (int i = 0 ; i < 10 ; i++)
//Notar el menor estricto (<) para ir desde 0 hasta 9
{ cout << "Introduzca nuevo valor para arreglo Entero["<> arregloEntero[i];
}
cout << "\nLuego de los valores introducidos, el arreglo quedo asi: " << endl;
for (int i = 0 ; i < 10 ; i++)
//Notar el menor estricto (<) para ir desde 0 hasta 9
cout << "arreglo Entero["<

return 0;}

EN RESUMEN ES UN ARREGLO

*No es una variable, es un grupo de variables agrupadas conocidas como elementos.
*Cada elemento ocupa una posición dentro del grupo.
*Todos los elementos son del mismo tipo de dato.
*El nombre del arreglo indica donde se localiza el grupo en la memoria de la computadora.
*Los arreglos se clasifican de acuerdo a las dimensiones que tengan.
*Las dimensiones no tienen relación con el plano cartesiano, nada que ver con la matemática.
*Las dimensiones indican como están organizados los elementos dentro del grupo.
*Los arreglos de dos dimensiones pueden visualizarse con tablas.
*Los valores que se guarden en el arreglo se almacenan en los elementos ya que los elementos son variables.

VECTORES
Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.

Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc. Crear un vector en c++ es sencillo, seguimos la siguiente sintaxis: Tipo nombre[tamaño];

EJEMPLO DE CODIGO DE UN VECTOR

#include
using namespace std;
int main()
{
int dim;
cout << "Ingresa la dimension del vector" << endl;
cin >> dim; // Supongamos que ingrese 10
int vector[dim]; // mi vector es de tamaño 10

for(int i=0;i < dim;i++){

vector[i] = i * 10;
cout << vector[i] << " ";
}
return 0;
}

MATRICES

Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es c++ es similar a un vector:
1
int matriz[fils][cols];
int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas. Las matrices también pueden ser de distintos tipos de datos como char, float, double,etc.
Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivas de memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Pero internamente el manejo es como su definicion lo indica, un vector de vectores, es decir, los vectores estan uno detras del otro juntos.
La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2 subindices que van en los corchetes. Si Coloco int matriz[2][3]=10; //estoy asignando al cuarto elemento de la tercera fila el valor 10. No olvidar que tanto filas como columnas se enumeran a partir de 0.

EJEMPLO DE CODIGO DE UNA MATRIZ

#include
#include
using namespace std;

int main (){
int matrix[50][50];
int tamano=0, i=0, j=0;
cout<<"Tamano de la matriz"< cin>>tamano;
cout<
for(i=0; i for(j=0; j matrix[i][j]=0;
}
}

for(i=0; i for(j=0; j
if(i if((i+j) >= ceil(tamano/2))
matrix[i][j]=1;

if(iceil(tamano/2))
if((j-i) <= ceil(tamano/2))
matrix[i][j]=2;

if(i>ceil(tamano/2) && j>ceil(tamano/2))
if((i+j) <= ceil(tamano/2 + tamano - 1))
matrix[i][j]=3;

if(i>ceil(tamano/2) && j if((i-j) <= ceil(tamano/2))
matrix[i][j]=4;

if(i==ceil(tamano/2))
matrix[i][j]=5;
if(j==ceil(tamano/2))
matrix[i][j]=5;
}
}

for(i=0; i for(j=0; j if(matrix[i][j]==0)
cout<<" ";
else
cout< }
cout< }

cin.get();
cin.get();
return 0;
}

FUENTES CONSULTADAS

http://codigomaldito.blogspot.com/2005/11/arreglos-o-arrays-en-c.html
http://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/
http://www.kernelpanic.org.ve/site/2009/12/03/programa-de-matrices-en-c/

Publicado por JOSE ALBERTO PARRA PEÑA

jueves, 25 de noviembre de 2010

VECTORES Y MATRICES

ENTRADAS Y SALIDAS


En c++ hay varias formas de ingresar y sacar un dato,esto depende en gran parte de las librerías que utilizaremos y la IDE que estemos trabajando, podemos ver algunas librerías como: iostream.h y sodio.h.



Se podría decir que esta libreria es una de las mas usadas en c++, que es la estandar, las operacionesde entrada y salida no forman parte del conjunto de sentencias de C++, sino que pertenecen al conjunto de funcionesy clases de la biblioteca estándar de C++.contienen archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas deberemos introducir la línea de código
#include

Esta biblioteca es una implementación orientada a objetos y está basada en el concepto de flujos.
Los objetos de flujo que vienen predefinidos son:
1.cin, entrada estándar (teclado);
2.cout, la salida estándar (pantalla);
3.cerr y clog ponen mensajes de error en la salida estándar.

Estos objetos se utilizan mediante los operadores << y >>. El operador << se denomina operador de inserción; y apunta al objeto donde tiene que enviar la información. Por lo tanto la sintaxis de cout será: cout << variable1; Las cadenas de texto son variables y se ponen entre " " (comillas dobles). Por su parte >> se denomina operador de extracción, lee información del flujo cin (a la izquierda del operador) y las almacena en las variables que indica a la derecha).
La sintaxis sería la siguiente:

cin>>variable1 >>...>>variable n;
Un ejemplo basico de código es el siguiente:
#include

main ()
{
int i;
cout<<"digite un número"; cin>>i;

}

Mostrara por pantalla la frase "digite un número" y posteriormente almacenaría el valor introducido por teclado en la variable i.




Operaciones de salida.

Printf: Imprimir en pantalla
Para utilizar la función printf en nuestros programas debemos incluir la directiva:
#include
Si sólo queremos imprimir una cadena basta con escribir la siguiente línea de código.
printf( "Cadena" );
Como resultado muestra en pantalla:
Cadena
Lo que pongamos entre las comillas es lo que vamos a sacar por pantalla.
Si volvemos a usar otro printf, por ejemplo:

#include
void main()
{
printf( "Cadena" );
printf( "Segunda" );
}

Obtendremos:
CadenaSegunda

Este ejemplo nos muestra cómo funciona printf. Para escribir en la pantalla se usa un cursor que no vemos. Cuando escribimos algo el cursor va al final del texto. Cuando el texto llega al final de la fila, lo siguiente que pongamos irá a la fila siguiente. Si lo que queremos es sacar cada una en una línea deberemos usar "\n". Es el indicador de retorno de carro. Lo que hace es saltar el cursor de escritura a la línea siguiente:

#include
void main()
{
printf( "Cadena\n" );
printf( "Segunda" );
}

y tendremos:
Cadena
Segunda

También podemos poner más de una cadena dentro del printf:
printf( "Primera cadena" "Segunda cadena" );
Lo que no podemos hacer es meter cosas entre las cadenas:
printf( "Primera cadena" texto en medio "Segunda cadena" );
esto no es válido. Cuando el compilador intenta interpretar esta sentencia se encuentra "Primera cadena" y luego texto en medio, no sabe qué hacer con ello y da un error.
Pero ¿qué pasa si queremos imprimir el símbolo " en pantalla? Por ejemplo imaginemos que queremos escribir:
Esto es "extraño"
Si para ello hacemos:
printf( "Esto es "extraño"" );
obtendremos unos cuantos errores. El problema es que el símbolo " se usa para indicar al compilador el comienzo o el final de una cadena. Así que en realidad le estaríamos dando la cadena "Esto es", luego extraño y luego otra cadena vacía "". Pues resulta que printf no admite esto y de nuevo tenemos errores.
La solución es usar \". Veamos:
printf( "Esto es \"extraño\"" );

Operaciones de entrada

Scanf

El uso de scanf es muy similar al de printf con una diferencia, nos da la posibilidad de que el usuario introduzca datos en vez de mostrarlos. No nos permite mostrar texto en la pantalla, por eso si queremos mostrar un mensaje usamos un printf delante. Un ejemplo:

#include
void main()
{
int num;
printf( "Introduce un número " );
scanf( "%i", &num );
printf( "Has tecleado el número %i\n", num );
}


El scanf no mueve el cursor de su posición actual, así que en nuestro ejemplo queda:
Introduce un número _ /* La barra horizontal indica dónde esta el cursor */
Esto es porque en el printf no hemos puesto al final el símbolo de salto de línea '\n'. Además hemos dejado un espacio al final de Introduce un número: para que así cuando tecleemos el número no salga pegado al mensaje. Si no hubiésemos dejado el espacio quedaría así al introducir el número 120 (es un ejemplo):
Introduce un número120
Veamos cómo funciona el scanf. Lo primero nos fijamos que hay una cadena entre comillas. Esta es similar a la de printf, nos sirve para indicarle al compilador qué tipo de datos estamos pidiendo. Como en este caso es un integer usamos %i. Después de la coma tenemos la variable donde almacenamos el dato, en este caso 'num'.
Fíjate que en el scanf la variable 'num' lleva delante el símbolo &, este es muy importante, sirve para indicar al compilador cual es la dirección (o posición en la memoria) de la variable.
Podemos preguntar por más de una variable a la vez en un sólo scanf, hay que poner un %i por cada variable:

#include
void main()
{
int a, b, c;
printf( "Introduce tres números: " );
scanf( "%i %i %i", &a, &b, &c );
printf( "Has tecleado los números %i %i %i\n", a, b, c );
}

De esta forma cuando el usuario ejecuta el programa debe introducir los tres datos separados por un espacio.

También podemos pedir en un mismo scanf variables de distinto tipo:

#include
void main()
{
int a;
float b;
printf( "Introduce dos números: " );
scanf( "%i %f", &a, &b );
printf( "Has tecleado los números %i %f\n", a, b );
}

A cada modificador (%i, %f) le debe corresponder una variable de su mismo tipo. Es decir, al poner un %i el compilador espera que su variable correspondiente sea de tipo int. Si ponemos %f espera una variable tipo float.

Getch y getche

Si lo que queremos es que el usuario introduzca un carácter por el teclado usamos las funciones getch y getche. Estas esperan a que el usuario introduzca un carácter por el teclado. La diferencia entre getche y getch es que la primera saca por pantalla la tecla que hemos pulsado y la segunda no
Ejemplos:

#include
void main()
{
char letra;
printf( "Introduce una letra: " );
fflush( stdout );
letra = getche();
printf( "\nHas introducido la letra: %c", letra );
}

Resultado:
Introduce una letra: a
Has introducido la letra: a

¿Qué es el fflush( stdout )?. Pues bien, cuando usamos la función printf, no escribimos directamente en la pantalla, sino en una memoria intermedia (lo que llaman un bufer). Cuando este bufer se llena o cuando metemos un carácter '\n' es cuando se envía el texto a la pantalla. En este ejemplo yo quería que apareciera el mensaje Introduce una letra: y el cursor se quedara justo después, es decir, sin usar '\n'. Si se hace esto, en algunos compiladores el mensaje no se muestra en pantalla hasta que se pulsa una tecla (probar). Y la función fflush( stdout ) lo que hace es enviar a la pantalla lo que hay en ese bufer.
Y ahora un ejemplo con getch:

#include
void main()
{
char letra;
printf( "Introduce una letra: " );
fflush( stdout );
letra = getch();
printf("\n has introducido la letra :%c", letra );
}

Resultado:
Introduce una letra:
Has introducido la letra: a
Como vemos la única diferencia es que en el primer ejemplo se muestra en pantalla lo que escribimos y en el segundo no.

Podemos decir que en los casos de entrada y salida que se quieran aplicar, depende del programador si las quiere utilizar, por otra parte es bueno saber que hay varias formas de ingresar y imprimir un dato, puesto que no se sabe cuando se va a necesitar.

pstd:los ejemplos ya expuestos fueron bajados de internet junto con algunas explicaciones ya dichas.

miércoles, 27 de octubre de 2010

PILA Y COLA

PILA

Una pila es una especie de listado libre en el que únicamente se puede insertar o eliminar nodos en uno de los dos lados de la lista, es conocida como una estructura de datos que los reúne en un orden llamado LIFO (Last In First Out) significa que el ultimo en entrar es el primero en salir, un claro ejemplo puede ser cuando se encuentra un grupo de personas y ellas ingresan a un lugar muy estrecho donde el ultimo es el que sale de primeras.

Su forma de trabajar se conoce como (empujar, meter) y (tirar, sacar elementos) se representa de la forma push y pop, de forma binaria se trabaja la pila para convertirla en una estructura en donde siempre son insertados nodos y van remplazando al nodo anterior, manteniendo un informe para el nodo que le sigue, también nos ofrece la opción de recobrar los datos opuestos que son insertados y solo permite incluir platos en la parte superior de la pila determinando que solo se pueda coger del mismo punto;

Una pila tiene dos funciones importantes que es apilar y desapilar, consta de diversas opciones como lo son crear, Apilar, desapilar, cima o cumbre y vaciar. En los cuales yo puedo, añadir un elemento y se conoce como (push), puedo borrar un elemento, avisa cuando se encuentra vacía o en el caso contrario, para eliminar lo único que se debe hacer es apuntar el elemento con el puntero y si se desea se pueden utilizar variables y después de realizar cualquier operación en una pila si quiero puedo tener acceso a la información guardada de forma binaria,

Trabaja con dos funciones como lo son función de hoja y función de macro, utiliza un campo llamado tamaño que es el que maneja el numero de elementos de la pila sin importar la operación que en ella se baya a realizar.

-La función de marco cumple con varias condiciones como fijar el espacio de la pila, necesita de una entrada de la tabla de funciones permite guardar registros que no son variables, trabaja con otras funciones empleando un puntero, maneja un preámbulo con una conclusión para el manejo de espacio en la pila.

-En la función de hoja es todo lo contrario a la marco no puede llamar a otras funciones necesita de una entrada de la tabla de funciones, permite dejar sin formar la pila en el momento en que se ejecuta

La pila cuenta con un elemento para que pueda dirigirse hacia el, que se halla conformado por un campo denominado dato y un puntero llamado siguiente el cual hace que pueda entrar el siguiente elemento que debe ser de su mismo tipo de lo contrario no puede apuntar hacia el elemento para que se pueda llevar a cabo las operaciones. El elemento que se encuentra en la parte de arriba nos permite recuperar los datos que se encuentran en la parte mayor.

Las pilas nos son útiles para muchas cosas por ejemplo cuando trabajamos con operaciones matemáticas, con ventanas cuando tenemos una abierta y queremos ver la que ya habíamos cerrado, entre otras operaciones que nos facilitan mucho el trabajo y nos sirven para muchas otras cosas.

COLA

Una cola o Queue es un tipo de lista o estructura donde solo se pueden insertar elementos también llamados nodos en uno de sus extremos y solo se pueden eliminar del otro extremo.

Esta estructura es llamada también FIFO el cual significa (First In First Out) primero en entrar es el primero en salir.

En la cola solo se puede coger el primero y el ultimo elemento y así mismo solo se pueden eliminar respectivamente.

Las colas son utilizadas mayormente en sistemas informáticos y software

OPERACIONES

· Crear: se crea la cola vacía.

· Encolar: se añade un elemento a la cola, con su correspondiente prioridad.

· Desencolar: se elimina el elemento frontal de la cola.

· Frente: se devuelve el elemento frontal de la cola.

· Destruye: elimina la cola de memoria.[1]

 
   Queue: push ();
   Queue: pop ();
   Queue: empty ();
   Queue: back ();
   Queue: front ();
   Queue: size ();

TIPOS DE COLAS

Existen varios tipos de cola entre ellas tenemos

1 COLA DE PRIORIDAD

En esta cola como bien lo dice su nombre, se atienden los elementos de acuerdo a la prioridad que tienen y su orden.

Una de las características q tienen la cola de prioridad es que nos permite añadir elementos en cualquier orden y extraer al máximo.

2 BICOLA O DOBLE COLA

La característica de esta cola es que se pueden añadir y eliminar por ambos extremos. Se le llama DEQUE (Double Ended QUEue).

Una bicola con entrada restringida es la que solo permite añadir elementos por un solo extremo pero que aun así se pueden eliminar por ambos extremos.

Mientras una bicola con restricción en la salida es la que solo permite inserciones por los dos extremos pero puede eliminarse solo por un lado.

Una lista doblemente enlazada es una lista lineal en la que cada nodo tiene dos enlaces, uno al nodo siguiente, y otro al anterior.

COLAS CIRCULARES O ANILLO

Es cuando el último elemento es seguido por el primer elemento. Esto quiere decir que tiene un sucesor y un predecesor, forma un anillo o circulo.

Los elementos pueden añadirse y eliminarse solamente desde la cabeza del anillo.

ejemplos:

cola priory

#include

#include

#include

using namespace std;

void cola()

{

priority_queue c;

c.push(80);

c.push(1500);

c.push(800);

c.push(9);

c.push(20);

c.push(320);

c.push(5);

c.push(650);

c.push(13);

c.push(43);

c.push(110);

c.push(93);

while (! c.empty() )

{

cout <<>

c.pop();

}

cout <<>

}

int main(int argc, char *argv[])

{

cola();

system ("PAUSE");

return EXIT_SUCCESS;

}


ejemplo de queue.

#include
#include
#include

using namespace std;
int main (int argc, char *argv [ ])

 {
queue s;
for (int i='A'; i<= 'Z'; i++)
s.push (i) ;
while (! s.empty())

{ cout <<>
s.pop ();
} { cout <<>





ESCRITO POR:

CLAUDIA PADUA

VANESSA QUIÑONES

miércoles, 15 de septiembre de 2010

condiciones y ciclos

condicionales y estructuras repetitivas

las condicionales en c++ es un procedimiento para llevar a cabo una serie de condiciones y completar o continuar un programaestos van acompañados de operadores los cueles son:
(==) igual que, (<=) menor igual que ,(>)mayor igual que ,(<>)mayor que , (i=) no es igual que odiferente de.

el proceso mediamnde el cual se llevan acabo es:
if(condicion)
sentencia
o tambien puede llevar mas condiciones
if(condicion)
sentencia 1
else
sentencia 2

el if significa si y el else significa y si no.

se llevan a cabo cuandose desea que una serie de instrucciones se ejecuten varias veces dentro de una misma ejecusion ya sea por una opcion de continuar o mediante una condicion cumplida.

un tipo de ciclo es do while:

en esta estructura repetitiva primero se ejecuta el boque y posteriormente se comprueba la condición.

es necesario poner muy bienlas llaves en los limites de las porcedimientos que se quiere llevar a cabo esta funcion.


while: este practicamente es una condicion ya que se analiza la condicion que hay dentro de los parentesis del que acompañan el while, si es cierta sigue continuando hace la operacion propuesta y se repite de nuevo el proceso.