Sei sulla pagina 1di 17

Arreglos: Un arreglo es una coleccin ordenada de variables del mismo tipo.

Las variables que pertenecen a un arreglo se conocen por el nombre de elementos. El trmino ordenado significa que en la coleccin hay un primer elemento, un segundo elemento, un tercer elemento, y as sucesivamente. Adems, los elementos pueden a su vez organizarse en subgrupos llamadas dimensiones. El subgrupo ms pequeo posible se conoce como un arreglo de una dimensin. Un arreglo de dos dimensiones se subdivide en arreglos de una dimensin. Un arreglo de tres dimensiones se subdivide en arreglos de dos dimensiones, stos a su vez se dividen en arreglos de una dimensin. Un arreglo de cuatro dimensiones se subdivide en arreglos de tres dimensiones los cuales a su vez se dividen en arreglos de dos dimensiones los que a su vez se dividen en arreglos de una dimensin. La misma idea se aplica en arreglos de ms dimensiones. En resumen, un arreglo: y y y y No es una variable; es un grupo de variables conocidas como elementos Cada elemento ocupa una posicin dentro del grupo Todos los elementos son del mismo tipo El nombre del arreglo indica donde se localiza el grupo en la memoria de la computadora y y Los arreglos se clasifican de acuerdo a las dimensiones que tengan Las dimensiones no tienen relacin con el plano Cartesiano; nada que ver con matemtica y y y Las dimensiones indican como estn organizados los elementos dentro del grupo Los arreglos de dos dimensiones pueden visualizarse como tablas Los valores que se guarden en el arreglo se almacenan en los elementos ya que los elementos son las variables Para crear arreglos en C++, hay que indicar:

1. 2. 3.

el tipo de los elementos (ejemplo, int, char, double, bool o un tipo definido por el programador) el nombre del arreglo la cantidad de dimensiones y sus tamaos; cada dimensin comienza con el signo [seguido por el tamao de la dimensin y termina con el signo]

Para crear un arreglo de una dimensin, el formato es el siguiente: <tipo de los elementos> <nombre del arreglo> [<tamao primera dimensin> ] Para determinar la cantidad de elementos en un arreglo, hay que multiplicar el tamao de cada una de las dimensiones indicados en la declaracin. El tamao debe ser un literal de tipo entero o el nombre de una constante de tipo entero. Para nombrar un elemento en un arreglo hay que indicar el nombre del arreglo, seguido de tantas parejas de corchetes [ ] como dimensiones declaradas. Dentro de cada pareja de corchetes tiene que haber un ndice. La combinacin de los ndices indica la posicin del elemento dentro del grupo. El valor mnimo para un ndice es 0. El valor mximo es uno menos que el tamao de la dimensin correspondiente en la declaracin del arreglo. Los arreglos se clasifican de acuerdo con el nmero de dimensiones que tienen. As se tienen los: y y Unidimensionales (vectores) Multidimensionales (tres o ms dimensiones)

Arreglos Unidimensionales: Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin relativa. Para implementar arreglos unidimensionales se

debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, la cota superior y la inferior. Arreglos Multidimensionales: Es una estructura de datos esttica y de un mismo tipo de datos, y de longitud fija que almacena datos de forma matricial. De igual forma que los arreglos unidimensionales, el almacenamiento de los datos en la memoria se realiza de forma secuencial y son accedidos mediante ndices. Los arreglos multidimensionales son tambin conocidos como matrices. Por lo tanto se llama matriz de orden "mn" a un conjunto rectangular de elementos dispuestos en filas "m" y en columnas "n", siendo m y n nmeros naturales. Las matrices se denotan con letras maysculas: A, B, C, ... y los elementos de las mismas con letras minsculas y subndices que indican el lugar ocupado: a, b, c, ... Un elemento genrico que ocupe la fila i y la columna j se escribe i,j. Si el elemento genrico aparece entre parntesis tambin representa a toda la matriz: A (i,j). Cadenas de Caracteres: Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carcter nulo, es decir el valor numrico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo. Entre las variables de cadenas podemos encontrar a las estticas que su longitud se define antes de ejecutar el programa y no puede cambiarse a lo largo de este, a las sedimntales que su longitud puede variar durante la ejecucin del programa, pero sin sobrepasar un lmite mximo declarado al principio y a las dinmicas que su longitud puede variar sin limitacin dentro del programa. Ntese que una cadena de n caracteres requerir un vector de n+1 elementos, debido al carcter nulo \0que se aade automticamente al final de la cadena.

Almacenar la cadena Mrida en un vector llamado ciudad Nro. De Elemento 1 2 3 4 5 6 7 Valor del ndice 0 1 2 3 4 5 6 Elemento del vector ciudad [0] ciudad [1] ciudad [2] ciudad [3] ciudad [4] ciudad [5] ciudad [6] Carcter de la cadena M e r i d a \0

Funciones bsica de manejo de cadenas Todas las funciones de manejo de cadenas son un prototipo en: #include <string.h> Las funciones comunes se describen a continuacin: y y char *stpcpy(const char *dest, const char *src) - Copia de una cadena en otra. int strcmp(const char *string1,const char *string2) - Compara cadena1 y cadena2 para determinar el orden alfabtico. y y char *strcpy(const char *string1,const char *string2) - Copia s2 a cadena. char *strerror(int errnum) - Devuelve un mensaje de error correspondiente a un nmero de error. y y int strlen(const char *string) - Determinar la longitud de una cadena. char *strncat(const char *string1, char *string2, size_t n) - Aadir n caracteres de s2 a cadena.

int strncmp(const char *string1, char *string2, size_t n) - Compara los primeros n caracteres de dos cadenas.

char *strncpy(const char *string1, const char *string2, size_t n) - Copia los primeros n caracteres de s2 a cadena.

int strcasecmp(const char *s1, const char *s2) - versin en maysculas y minsculas de strcmp ().

int strncasecmp(const char *s1, const char *s2, int n) - versin en maysculas y minsculas

Cadena de bsqueda La biblioteca tambin ofrece varias funciones de bsqueda de cadena: y char *strchr(const char *string, int c) - Encuentra la primera aparicin del carcter c en la cadena. y char *strrchr(const char *string, int c) - Encuentra la ltima aparicin del carcter c en la cadena. y char *strstr(const char *s1, const char *s2) - Localiza la primera aparicin de la cadena s2 en la cadena s1. y char *strpbrk(const char *s1, const char *s2) - devuelve un puntero a la primera aparicin en la cadena s1 de cualquier carcter de la cadena s2, o un puntero nulo si ningn carcter de s2 en s1 existe y size_t strspn(const char *s1, const char *s2) - devuelve el nmero de caracteres al principio de s1 que coinciden con s2. y size_t strcspn(const char *s1, const char *s2) - devuelve el nmero de caracteres al principio de s1 que no coinciden con s2. y char *strtok(char *s1, const char *s2) - romper la cadena apuntada por s1 en una secuencia de smbolos, cada uno de ellos est delimitado por uno o ms caracteres de la cadena apuntada por s2. y char *strtok_r(char *s1, const char *s2, char **lasts) - tiene la misma funcionalidad que strtok (), excepto que un puntero a una cadena de marcador de posicin dura debe ser suministrada por la persona que llama.

BIBLIOGRAFA  http://www.mailxmail.com/curso-aprende-programar/estructuras-datos-arreglos  http://html.rincondelvago.com/arreglos.html  http://aldeafraypedrodeagreda.files.wordpress.com/2009/12/11-arreglosmultidimensionales.pdf  http://www.mailxmail.com/curso-aprende-programar/matrices-cadenas-caracteres  http://bc.inter.edu/facultad/hbruckman/documents/Manual.de.Referencia.de.C++..Parte.III.-.Arreglos.pdf  http://translate.google.com/translate?hl=es&langpair=en|es&u=http://www.cs.cf.ac. uk/Dave/C/node19.html

UNIDAD 5 DATOS COMPUESTOS: ARREGLOS UNIDIMENCIONALES Y MULTIDIMENCIONALES, CADENA DE CARACTERES

SECCION 05

INTEGRANTES: MANEIRO, JOSE R. RONDON, JOHNNY ROBLES, FABIAN

1.

Programa que lee una ecuacin y la guarda en un arreglo de char. La ecuacin debe contener 2 operando y 1 operador lgico. La longitud mxima del arreglo de chars debe ser 80. El programa busca el operador dentro de la cadena de caracteres para identificar que operacin debe ejecutar guindose por una estructura switch de seleccin, luego busca los operando y ejecuta la operacin.

#include <iostream> #include <string> using namespace std; int main(){ int desicion,operando1,operando2,resultado; char ecuacion[80]; for(int i=0; i<80; i++){ ecuacion[i]='$'; } cout<<"Ingrese una operacion matematica de un operador y dos operandos"<<endl; cin>>ecuacion; if((strchr(ecuacion,'+'))!=NULL){ desicion=1; } if(strchr(ecuacion,'-')!=NULL){ desicion=2; } if(strchr(ecuacion,'/')!=NULL){ desicion=3; }

if(strchr(ecuacion,'*')!=NULL){ desicion=4; } if(strchr(ecuacion,'%')!=NULL){ desicion=5; } char numero1[80],numero2[80]; switch(desicion) { case 1: desicion=1; { int i=0; do{ numero1[i]=ecuacion[i]; i++; }while(ecuacion[i]!='+'); operando1=atoi(numero1); int j=0; do{ numero2[j]=ecuacion[i]; i++; j++; }while(ecuacion[i]!='$'); operando2=atoi(numero2); resultado=operando1+operando2;

cout<<"La suma de "<<operando1<<" mas "<<operando2<<" es igual a: "<<resultado<<endl; break; } case 2: desicion=2; { int i=0; do{ numero1[i]=ecuacion[i]; i++; }while(ecuacion[i]!='-'); operando1=atoi(numero1); int j=0; do{ i++; numero2[j]=ecuacion[i]; j++; }while(ecuacion[i]!='$'); operando2=atoi(numero2); resultado=operando1-operando2; cout<<"La resta de "<<operando1<<" menos "<<operando2<<" es igual a: "<<resultado<<endl; break; } case 3: desicion=3; {

int i=0; do{ numero1[i]=ecuacion[i]; i++; }while(ecuacion[i]!='/'); operando1=atoi(numero1); int j=0; do{ i++; numero2[j]=ecuacion[i]; j++; }while(ecuacion[i]!='$'); operando2=atoi(numero2); resultado=operando1/operando2; cout<<"La division de "<<operando1<<" entre "<<operando2<<" es igual a: "<<resultado<<endl; break; } case 4: desicion=4; { int i=0; do{ numero1[i]=ecuacion[i]; i++; }while(ecuacion[i]!='*');

operando1=atoi(numero1); int j=0; do{ i++; numero2[j]=ecuacion[i]; j++; }while(ecuacion[i]!='$'); operando2=atoi(numero2); resultado=operando1*operando2; cout<<"La multiplicacion de "<<operando1<<" por "<<operando2<<" es igual a: "<<resultado<<endl; break; } case 5: desicion=5; { int i=0; do{ numero1[i]=ecuacion[i]; i++; }while(ecuacion[i]!='%'); operando1=atoi(numero1); int j=0; do{ i++; numero2[j]=ecuacion[i];

j++; }while(ecuacion[i]!='$'); operando2=atoi(numero2); double resultado2; resultado2=(operando1*operando2)/100; cout<<"El "<<operando1<<" por ciento de "<<operando2<<" es igual a: "<<resultado2<<endl; break; } } system("PAUSE"); }

2.

Programa que pide ingresar una matriz MxM, la cual es llenada por un ciclo for. Luego crea un nuevo vector que contara en cada una de sus posiciones la suma de los elementos pares de las filas de la matriz inicial. Para comparar cuales son los elementos pares, se divide el valor entre 2 y si esta divisin es exacta entonces es un numero par.

#include <iostream>

using namespace std;

int main(){

int M;

cout<<"Introduzca el numero de filas y columnas"<<endl; cin>>M;

int matriz[M][M];

for(int i=0;i<M;i++){ for(int j=0; j<M;j++){ cout<<"Ingrese el valor correspondiente a la fila "<<i+1<<" y columna "<<j+1<<endl; cin>>matriz[i][j]; } } int total, vector[M];

for(int i=0;i<M;i++){ total=0; for(int j=0;j<M;j++){ if(matriz[i][j]%2==0){ total=matriz[i][j]+total; } vector[i]=total; } } for(int i=0;i<M;i++){ cout<<"La suma de los elementos pares en la fila "<<i+1<<" es :"<<vector[i]<<endl;

} system("PAUSE"); }

#include <iostream>

using namespace std;

3.

Programa que pide la longitud de un vector N, crea el vector y luego comienza el llenado usando un ciclo For. Luego el usuario puede buscar un valor X dentro del arreglo, de existir este valor dentro del arreglo, ser creado un nuevo vector que contendr las posiciones en que aparece el valor X dentro del arreglo principal.

int main(){ int n; cout<<"Ingrese la longitud del arreglo"<<endl; cin>>n; int vector[n];

for(int i=0;i<n;i++){ cout<<"Ingrese el valor correspondiente al elemento "<<i+1<<endl; cin>>vector[i]; } int X,veces=0;

cout<<"Introduzca el numero que quiere buscar dentro del arreglo"<<endl;

cin>>X;

for(int i=0;i<n;i++){ if(vector[i]==X){ veces++; } } system("cls"); int arreglo[veces]; int j=0; for(int i=0;i<n;i++){ if(vector[i]==numero){ arreglo[j]=i+1; j++; } } if(veces>0){ for(int i=0;i<veces;i++){ cout<<"El valor aparece en la posicion "<<arreglo[i]<<endl; } }else cout<<"El valor no est dentro del arreglo"<<endl; system("PAUSE"); }

Potrebbero piacerti anche