arreglos computción. definición un arreglo es una colección de elementos del mismo tipo que se...
TRANSCRIPT
![Page 1: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/1.jpg)
Arreglos
Computción
![Page 2: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/2.jpg)
Definición
Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador.
Para acceder a los elementos individuales de un arreglo se utiliza un subíndice que debe ser un número entero.
5656910
-32241006212
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
Arreglo con nombre a
Número de la posición de cada elemento
![Page 3: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/3.jpg)
Ejemplo
int main(){ int n[ 10 ]; // n es un arreglo de 10 enteros // inicializa los elementos del arreglo n en 0 for ( int i = 0; i < 10; i++ ) //establece el elemento de la ubicación i en 0 n[ i ] = 0; cout << "Elemento" << setw(13)<< "Valor" << endl;//despliega el contenido de un arreglo n //en formato tabular for ( int j = 0; j < 10; j++ ) cout <<setw(7)<<j<<setw(13)<<n[j] << endl; return 0; // indica terminación exitosa} // fin de main
![Page 4: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/4.jpg)
Inicialización de un arreglo
#include <iostream>using std::cout;using std::endl;#include <iomanip>using std::setw;int main(){//utiliza una lista de inicialización para //inicializar el arreglo n int n[10]={32,27,64,18,95,14,90,70,60,37}; cout <<"Elemento"<<setw(13) << "Valor" << endl;//salida del contenido del arreglo n en formato tabular for ( int i = 0; i < 10; i++ ) cout<<setw(7)<<i<<setw(13)<<n[i]<<endl; return 0; // indica terminación exitosa} // fin de main
![Page 5: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/5.jpg)
Otra inicialización
int main(){ // la variable constante se puede utilizar para //especificar el tamaño del arreglo const int tamanoArreglo = 10; int s[tamanoArreglo];//el arreglo s tiene 10 elementos for (int i=0;i<tamanoArreglo;i++)//establece los valores s[ i ] = 2 + 2 * i; cout << "Elemento" << setw( 13 ) << "Valor" << endl; // muestra el contenido del arreglo s en formato tabular for ( int j = 0; j < tamanoArreglo; j++ ) cout << setw( 7 ) << j << setw( 13 ) << s[ j ] << endl; return 0; // indica terminación exitosa} // fin de main
Variable constante
![Page 6: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/6.jpg)
Suma de un arreglo
int main(){ const int tamanoArreglo = 10; int a[tamanoArreglo] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int total = 0; // suma el contenido del arreglo a for ( int i = 0; i < tamanoArreglo; i++ ) total += a[ i ]; cout <<"El total de los elementos del arreglo es "<< total << endl; return 0; // indica terminación exitosa} // fin de main
Suma los elementos de un arreglo
![Page 7: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/7.jpg)
Histograma
int main(){ const int tamanoArreglo = 10; int n[tamanoArreglo] = {19,3,15,7,11,9,13,5,17,1}; cout << "Elemento" << setw( 13 ) << "Valor" << setw( 17 ) << "Histograma" << endl; //para cada elemento del arreglo n, muestra una barra //en el histograma for ( int i = 0; i < tamanoArreglo; i++ ) { cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << setw( 9 ); //despliega una barra for ( int j = 0; j < n[ i ]; j++ )
cout << '*'; cout << endl; // inicia la siguiente línea de salida } // fin de la estructura for externa return 0; // indica terminación exitosa} // fin de main
![Page 8: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/8.jpg)
La criba de Eratóstenes
int main(){ int N = 10000,i,j; int primo[N]; for(i = 0; i<N; i++) primo[i] = 1; for(i = 2; i<=N/2; i++){ for(j = 2; j<=N/i; j++) if(i*j<N)
primo[i*j] = 0; } for(i = 0; i<N; i++) if(primo[i]) cout << " " << i; getch(); return 0;}
![Page 9: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/9.jpg)
Tarea
Haga un programa que calcule la desviaciòn estandar de un arreglo de valores.
n
xx
n
xx
n
iI
n
ii
1
1
2
1
![Page 10: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/10.jpg)
Paso de arreglos a funciones
Para pasar un arreglo a una función debemos conocer su tamaño para poder saber cuantos elementos se van a procesar.
Para esto declare la función con un parámetro extra para pasar el número de elementos a la función
![Page 11: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/11.jpg)
Ejemplo
#include <iostream.h>#include <conio.h>
double promedio(double a[], int tamanio){ double suma = 0; for(int i=0; i<tamanio; i++) suma += a[i]; return suma/tamanio;}
int main(){ double x[] = {3.5, 6.3, 4.5, 7.5, 5.4}; cout << promedio(x,5) << endl; getch(); return 0;}
![Page 12: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/12.jpg)
Modificación de elementos mediante funciones
En C los arreglos siempre se pasan por referencia de tal manera que siempre es posible modificar los elementos dentro de una función.
Ejemplo, inicia un arreglo con valores aleatorios entre 0 y 99.
void inicia(double a[], int tamanio){ for(int i=0; i<tamanio; i++) a[i] = rand()%100;}
![Page 13: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/13.jpg)
OrdenaciónLa operación de ordenación es de las más comunes en computación.
#include <iostream.h>#include <conio.h>
void Burbuja(int a[],int tam){ for(int i = 0; i< tam - 1 ; i++) for(int j = i; j< tam;j++) if(a[i]>a[j]){ int temp = a[i]; a[i]=a[j]; a[j]=temp; }}
int main(){ int b[20] = {1,2,3,2,4,3, 5,6,3,7,8,9, 4,5,3,5,3,4,5,6}; Burbuja(b,20); for(int i =0; i<20; i++) cout << b[i] << endl; getch(); return 0;}
![Page 14: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/14.jpg)
Búsqueda
int BusquedaLineal(int a[],int b,int tam){ for(int i = 0; i< tam; i++) if(a[i]==b) return n; return -1;}
Otra operación importante es la búsqueda de el valor de un elemento dentro de un arreglo.
![Page 15: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/15.jpg)
Arreglos de dos dimensiones
Los arreglos de dos dimensiones se declaran de acuerdo al esquema
tipo variable[renglones][columnas];
Ejemplo
int a [5][4];a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[3][0] a[3][1] a[3][2] a[3][3]
a[4][0] a[4][1] a[4][2] a[4][3]
![Page 16: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/16.jpg)
inicialización
int a[5][4] = {{2,3,4,2},{2,0,6,1},
{3,5,5,0},{2,2,1,1},{3,2,5,6}};
2 3 4 2
2 0 6 1
3 5 5 0
2 2 1 1
3 2 5 6
![Page 17: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/17.jpg)
inicialización (cont.)
int a[5][4] = {{2,3},{1},
{3,5,5,0},{2},{3}};
2 3 0 0
1 0 0 0
3 5 5 0
2 0 0 0
3 0 0 0
![Page 18: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/18.jpg)
ejemplovoid despliegaArreglo( int a[][ 3 ] ){ for ( int i = 0; i < 2; i++ ) {// for para cada fila for ( int j = 0; j < 3; j++ )//despliega los valores de columnas cout << a[ i ][ j ] << ' '; cout << endl; // inicia una nueva línea de salida } // fin de la estructura for externa} // fin de la función despliegaArregloint main(){ int arreglo1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }; int arreglo2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }; int arreglo3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; cout << "Los valores del arreglo1 por fila son:" << endl; despliegaArreglo( arreglo1 ); cout << "Los valores del arreglo2 por fila son:" << endl; despliegaArreglo( arreglo2 ); cout << "Los valores del arreglo3 por fila son:" << endl; despliegaArreglo( arreglo3 ); return 0; // indica terminación exitosa} // fin de main
Debe especificarse
![Page 19: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/19.jpg)
Operaciones con matrices
Se puede utilizar la técnica vista anteriormente para matrices de tamaño fijo.
Si las matrices que se van a manipular son de 3x3 la función para sumar podría ser
void Suma(double a[][3],double b[][3],double c[][3]){ for(int i = 0; i< 3 ; i++) for(int j = 0; j< 3 ; j++) c[i][j] = a[i][j] + b[i][j];}
![Page 20: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/20.jpg)
Otras operaciones de matricesvoid Resta(double a[][3],double b[][3],double c[][3]){ for(int i = 0; i< 3 ; i++) for(int j = 0; j< 3 ; j++) c[i][j] = a[i][j] - b[i][j];}
void Multiplica(double a[][3],double b[][3],double c[][3]){ for(int i = 0; i< 3 ; i++) for(int j = 0; j< 3 ; j++){ c[i][j] = 0; for(int k = 0; k< 3 ; k++) c[i][j] += a[i][k]*b[k][j]; }}
![Page 21: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/21.jpg)
Otras operaciones de matrices
void print(double a[][3]){ for(int i = 0; i< 3 ; i++){ for(int j = 0; j< 3 ; j++) cout << a[i][j] << " "; cout << endl; } cout << endl;}
impresión de una matriz de 3x3
![Page 22: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/22.jpg)
Tarea #10Escriba una función para obtener la traspuesta de una matriz de 3x3.
Escriba una función que calcule la suma de todos los elementos de una matriz de 3x3
Escriba una función que calcule la traza de una matriz de 3x3
Calcule con esta tarea y lo anterior lo siguiente:
a + b, a - b, a * b, traspuesta(a), traspuesta(b), traza(a), traza(b), sumatotal(a), sumatotal(b),
054
3.2912
605.7
4.57.85.6
4.33.26.5
3.67.84
b
a
![Page 23: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/23.jpg)
Matrices de cualquier tamaño
Es conveniente manejar las matrices de tamaño arbitrario mediante un vector de una sola dimensión.
La matriz que se pasa como parámetro se pasa como un apuntador.
Las funciones para manipular matrices se definen para un tamaño máximo de elementos.
![Page 24: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/24.jpg)
Ejemplo suma
void sumaMat(int nrRow,int nrCol, int maxCol, float *mat1, float *mat2, float *mat3) { int i, j; for( i=0; i<nrRow; i++ ) for( j=0; j<nrCol; j++ ) mat3[i*maxCol + j] = mat1[i*maxCol + j] + mat2[i*maxCol + j]; // o: mat3[i*maxCol + j] = *(mat1 + i*maxCol + j) // + *(mat2 + i*maxCol + j)}
Debe especificarse máximo tamaño
Tamaño real de las matrices
![Page 25: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/25.jpg)
producto
void prodMat(int nrRow,int nrCol,int maxCol,float *mat1, float *mat2, float *mat3) { int i, j, k; for( i=0; i<nrRow; i++ ) for( j=0; j<nrCol; j++ ){ mat3[i*maxCol + j] = 0; for( k=0; k<nrCol; k++ ) mat3[i*maxCol + j] += mat1[i*maxCol + k] * mat2[k*maxCol + j]; }}
![Page 26: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/26.jpg)
Impresión
void printMat(int nrRow,int nrCol,int maxCol,float *mat) {
int i, j; for( i=0; i<nrRow; i++ ){ for( j=0; j<nrCol; j++ )
cout << mat[i*maxCol + j] << " "; cout << endl; } cout << endl;}
![Page 27: Arreglos Computción. Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los](https://reader036.vdocumento.com/reader036/viewer/2022062807/5665b4961a28abb57c926e4b/html5/thumbnails/27.jpg)
Ejemplo de programa principal
int main(void) { int row=4, col=4; float add, maxRow; float a[MAXROW][MAXCOL] = {{1,2,3,4},{3,2,1,1},{4,3,7,6},{4,5,5,6}}; float b[MAXROW][MAXCOL] = {{4,5,7,1},{2,4,8,9},{3,3,0,0},{2,1,1,1}}; float c[MAXROW][MAXCOL]; printMat(row,col,MAXCOL,(float *) a); printMat(row,col,MAXCOL,(float *) b); sumaMat(row,col,MAXCOL,(float *) a,(float *) b,(float *) c); printMat(row,col,MAXCOL,(float *) c); getch(); return 0;}