• No se han encontrado resultados

Definición. Procesamiento de Arreglos. Paso de Parámetro a funciones. Arreglos multidimensionales 8/28/2013. Arreglos Unidad 0 Programación AVANZADA

N/A
N/A
Protected

Academic year: 2021

Share "Definición. Procesamiento de Arreglos. Paso de Parámetro a funciones. Arreglos multidimensionales 8/28/2013. Arreglos Unidad 0 Programación AVANZADA"

Copied!
8
0
0

Texto completo

(1)

1

Otoño 2013

Arreglos

Unidad 0

Programación AVANZADA

Contenido

Definición

Procesamiento de Arreglos

Paso de Parámetro a funciones

Arreglos multidimensionales

2

Introducción

Una variable puede

almacenar un valor único.

Ejemplo

a = 5;

contador = 0;

Si necesitamos 5 valores

diferentes del mismo tipo,

usaríamos 5 variables

int a,b,c,d,e;

Si el número de valores a

guardar es mayor a 5

necesitamos una

estrategia diferente

Los arreglos nos

permitirán definir

conjunto de valores del

mismo tipo

3

Arreglo

Un arreglo es una colección finita y homogénea

de datos.

Cada elemento de la colección es almacenado en

una casilla del arreglo

Para obtener cada elemento se debe referenciar

por medio del índice del arreglo

4 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9

0 1 2 3 4 5 6 7 8 9 D

Definición

Un arreglo se define de la siguiente forma:

tipo nombre_del_arreglo[expresion]

5

Tipo de

datos:

int

float

char

Nombre de la

variable

Indica la cantidad de

elementos del arreglo

Ejemplo

SIZE = 10;

int A[10];

int B[SIZE];

int C[SIZE*2];

6 15 23 8 14 0 -6 11 4 -5 8

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

A

(2)

Arreglo

El compilador se encarga de reservar el

espacio en memoria necesario para almacenar

los datos del arreglo

7 15 23 8 14 0 A[0] A[1] A[2] A[3] A[4]

A

Inicialización

int A[10] = {15,23,8,14,0,-6,11,4,-5,8}

int A[] = {15,23,8,14,0,-6,11,4,-5,8}

8 15 23 8 14 0 -6 11 4 -5 8

A

15 23 8 14 0 -6 11 4 -5 8

A

Inicialización

int A[10] = {15,23}

int A[10] = {}

9 15 23 0 0 0 0 0 0 0 0

A

0 0 0 0 0 0 0 0 0 0

A

Definición de Constantes

El tamaño del arreglo puede definirse por medio de

una constante, de esta forma será mas fácil modificar

el programa en caso necesario

#define nombre expresion

#define es una directiva al compilador que indica que

el texto que sigue sera reemplazado por la expresión

Ejemplo

#define size 15

10

Ejemplo

Escriba un programa en el cual lea 10 números

enteros y almacénelos en un arreglo

Busque un numero dado en el arreglo e

indique cuantas veces aparece dentro del

arreglo

Ejemplo

#include <iostream>

#define size 10 using namespace std; int main() { int i,num,freq=0; int arreglo[size]={}; for(i=0;i<size;i++){ cout << “Arreglo[“ << i << “]=”; cin >> arreglo[i]; }

cout << “Indique el número que va a buscar ”; cin >> num; for(i=0;i<size;i++){

if(arreglo[i] == num) freq++;}

cout << “El número “ << num << “ se encuentra “ << freq << “veces en el arreglo”;

(3)

Ejemplo

Escriba un programa en el cual lea 10 números

reales y almacénelos en un arreglo

Calcule la media de los números

Calcule la desviación de la media para cada

número

13

Ejemplo

#include <iostream> #define size 100 using namespace std; int main() { int i,n;

float media=0,num[size]={}; // lea los números

cout << “Proporcione la cantidad de números a leer ”; cin >> n;

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

cout << “Numero ” << i << “ “; cin>> num[i]; media += num[i];

}

// calcule la media media = media/n;

cout << “La media es ” << media;

// calcule la desviación de la media para cada muestra cout <<“\nLa desviacion por muestra es\n”; for(i=0;i<n;i++)

cout << “Numero “ << i << “ = ” << num[i] << “ desviacion” << media – num[i] << endl;

return 0; }

14

Ejemplo

Lee y almacena las calificaciones de 20

alumnos. Las calificaciones son números

enteros comprendidos entre 5 y 10.

Escribe un programa que calcule, almacene e

imprima la frecuencia de cada una de las

calificaciones y además obtenga e imprima la

frecuencia mas alta

Si hubiera calificaciones con la misma

frecuencia, debe obtener la primer ocurrencia

15

Ejemplo

#include <iostream> #define size 100 using namespace std; int main() { int i,n,Max,indice; int cal[size],freq[6]={0};

// lea los números

cout <<"Proporcione la cantidad de calificaciones "; cin >> n;

cout <<"Proporcione las calificaciones (5 -10)\n"; for(i=0;i<n;i++){ cout << "Calificacion " << i << " = "; cin>>cal[i]; } 16

Ejemplo

// calcule la frecuencia

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

freq[(cal[i]-5)]++;

// imprima las frecuencias

cout << "Las frecuencias de las calificaciones

son:\n";

for(i=0; i < 6; i++)

cout << "Existen " << freq [i] << "

alumnos con calificacion = " << i+5 << endl;

17

Ejemplo

// determine la maxima frecuencia

Max = freq[0]; indice = 0;

for(i=1; i < 6; i++)

if (Max < freq[i]){

Max = freq[i];

indice = i;}

cout << "La calificacion con mayor frecuencia

es " << indice + 5 << endl;

return 0;

}

(4)

Paso de arreglo como parámetro

Los arreglos pueden pasar como parámetros hacia las

funciones

Los arreglos pasan por referencia hacia las funciones

por lo cual las funciones pueden afectar su valor

original

En la declaración de arreglos formales se le indican los

corchetes para indicar que se espera un arreglo

La llamada a la función no incluye los corchetes

19

Ejemplo

void lectura(int A[],int size)

{

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

{

cout <<"dato " << i << " = ";

cin >> A[i];

}

}

20

Ejemplo

void imprime(int A[],int size)

{

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

cout <<"dato " << i << " = "

<< A[i] << endl;

}

21

Ejemplo

void frecuencia(int f[], int A[], int size)

{

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

f[A[i]-5]++;

}

22

Ejemplo

int maximo(int A[],int size)

{

int max = A[0];

int indice = 0;

for(int i=1; i < size; i++)

if(max < A[i])

{

max = A[i];

indice = i;

}

return indice;

}

Ejemplo

#include <iostream>

#define size 100

using namespace std;

int main()

{

int i,n,Max,indice;

int cal[size],freq[6]={0};

// lea los números

cout <<"Proporcione la cantidad de

calificaciones ";

cin >> n;

cout <<"Proporcione las calificaciones

(5 -10)\n";

(5)

Ejemplo

// calcule la frecuencia

frecuencia(freq,cal,n);

// imprima las frecuencias

cout << "Las frecuencias de las

calificaciones son:\n";

for(i=0; i < 6; i++)

cout << "Existen " << freq [i]

<< " alumnos con calificacion = "

<< i+5 << endl;

25

Ejemplo

// determine la maxima frecuencia

indice = maximo(freq,6);

cout << "La calificacion con mayor frecuencia

es " << indice + 5 << endl;

return 0;

}

26

Ejercicio

Escriba una función que calcule la media de

una lista de números enteros

La función debe recibir como parámetros de

entrada el arreglo y el tamaño del arreglo

La función deberá regresar la media de la lista

de números

27

Solución

float media(float A[], int size)

{

int i;

float suma=0;

for(i=0; i < size; i++)

suma+=A[i];

return (suma/size);

}

28

Ejemplo

#include <iostream> #define size 100 using namespace std; int main() { int i,n;

float m,num[size]={}; // lea los números

cout << “Proporcione la cantidad de números a leer ”; cin >> n;

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

cout << “Numero ” << i << “ “; cin>> num[i]; }

// calcule la media m = media(num,n); cout << “La media es ” << m;

// calcule la desviación de la media para cada muestra cout <<“\nLa desviacion por muestra es\n”; for(i=0;i<n;i++)

cout << “Numero “ << i << “ = ” << num[i] << “ desviacion” << media – num[i] << endl;

return 0; }

29

Ejemplo

#include <iostream> #define size 100 using namespace std; int main() { int i,n;

float m,num[size]={}; // lea los números

cout << “Proporcione la cantidad de números a leer ”; cin >> n;

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

cout << “Numero ” << i << “ “; cin>> num[i]; }

// calcule la media

cout << “La media es ” << media(num,n);;

// calcule la desviación de la media para cada muestra cout <<“\nLa desviacion por muestra es\n”; for(i=0;i<n;i++)

cout << “Numero “ << i << “ = ” << num[i] << “ desviacion” << media – num[i] << endl;

return 0; }

(6)

ARREGLOS MULTIDIMENSIONALES

Otoño 2013 31

Arreglos bidimensionales

Arreglos en 2D

Tablas con renglones y columnas (Arreglo

m

x

n

)

Matriz: Especificar Renglon, luego Columna

Renglón 0

Columna 0

Columna 1 Columna 2 Columna 3

a[0][0] a[1][0] a[2][0] a[0][1] a[1][1] a[2][1] a[0][2] a[1][2] a[2][2] a[0][3] a[1][3] a[2][3] Índice Renglón Nombre del Arreglo

Índice Columna Renglón 1 Renglón 2

Arreglos Bidimensionales

Inicialización

–int b[2][2]={{1,2},{3,4}};

Se inicializan grupos por renglón entre llaves { }

Si no existen suficientes elementos, estos son

puestos a cero

int b[2][2]={{1},{3,4}};

Haciendo referencia a elementos específicos

Especificar renglón, después columna

cout << b[0][1]; cin >> b[0][1]; 1 2 3 4 1 0 3 4

Ejemplo 1

Escriba un programa que lea un arreglo

bidimensional

El programa deberá imprimir los valores de la

diagonal

Ejemplo 1

void lectura(int A[][size], int row) {

for(int i=0; i< row; i++) for (int j = 0; j < row; j++) { cout << "A[" << i << "]" << "[" << j << "]=" ; cin >> A[i][j]; } }

void imprime(int A[][size], int row) {

for(int i=0; i< row; i++){ for (int j = 0; j < row; j++)

cout << "A[" << i << "]" << "[" << j << "]=" << A[i][j]; cout << endl;

} }

Imprime los valores de la diagonal

void diagonal(int A[][size], int row)

{

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

cout << A[i][i] << endl;

cout << endl;

(7)

Programa que imprime la diagonal de una matriz

#include <iostream> #define size 3

using namespace std;

void lectura(int A[][size], int row); void imprime(int A[][size], int row); void diagonal(int A[][size], int row);

main() { int matriz[size][size]; lectura(matriz,size); imprime(matriz,size);

cout << "Los elementos de la diagonal son: "; diagonal(matriz,size);

return 0; }

Programa que realiza la suma de dos matrices

void suma(int A[][MAX], int

B[][MAX], int C[][MAX], int row,

int col)

{

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

for (int j = 0; j < col; j++)

C[i][j]=A[i][j]+B[i][j];

}

Ejemplo 2

void lectura(int A[][size], int row) {

for(int i=0; i< row; i++) for (int j = 0; j < row; j++) { cout << "A[" << i << "]" << "[" << j << "]=" ; cin >> A[i][j]; } }

void imprime(int A[][size], int row) {

for(int i=0; i< row; i++){ for (int j = 0; j < row; j++)

cout << "A[" << i << "]" << "[" << j << "]=" << A[i][j]; cout << endl; } }

Ejemplo:

#include <iostream> #define MAX 2 using namespace std;

void lectura(int A[][MAX], int row, int col); void imprime(int A[][MAX], int row, int col);

void suma(int A[][MAX],int B[][MAX],int C[][MAX], int row, int col);

main() {

int A[MAX][MAX],B[MAX][MAX];

cout <<"Proporcione los elementos de la matriz A\n”; lectura(A,MAX,MAX);

cout <<"\n\nProporcione los elementos de la matriz B\n"); lectura(B,MAX,MAX);

suma(A,B,B,MAX,MAX); cout <<"El resultado es: \n"); imprime(B,MAX,MAX);

return 0; }

Ejemplo 3

La traza de una matriz esta definida como la suma

de los elementos de la diagonal de la matriz

Ejemplo:

Escriba un programa que calcule la traza de una

matriz

 

2

1

11

12

1

2

8

4

2

6

3

2

12

tr

traza

int traza(int A[][MAX], int row)

{

int suma = 0;

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

suma += A[i][i];

}

(8)

Programa que calcula la traza de una matriz

#include <stdio.h>

#include <stdlib.h> #define size 3

void lectura(int A[][size], int row); void imprime(int A[][size], int row); void traza(int A[][size], int row); main() { int matriz[size][size]; lectura(matriz,size); imprime(matriz,size);

cout <<"La traza de la matriz es "<<traza(matriz,size)<< endl; return 0;

}

Ejemplo 4

Realice un programa que transforme la fecha

del formato:

dd/mm/aa

Al formato:

dd de mes de 20aa

Ejemplo:

23/02/02

23 de febrero del 2002

Ejemplo 4

int check_format(char date[])

{

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

{

if((i == 2)||(i==5)){

if(date[i] != '/')

return 0;}

else

if(!isdigit(date[i]))

return 0;

}

return 1;

}

int main() { char fecha[8]; int mes,dia,year; char meses[12][12]={"Enero","Febrero","Marzo","Abril","Mayo","J unio","Julio","Agosto“,"Septiembre", "Octubre", "Noviembre", "Diciembre"};

cout << "Proporciona una fecha en el formato dd/mm/aa "; cin >> fecha; if (check_format(fecha)) { dia = ((fecha[0]-48)*10)+(fecha[1]-48); mes = ((fecha[3]-48)*10)+(fecha[4]-48); year = ((fecha[6]-48)*10)+(fecha[7]-48); if (year <= 10) year += 2000; else year += 1900;

if ((dia < 32) && (dia > 0) && (mes < 13) && (mes > 0)) cout<<"\n\n%d de %s de %d\n\n", dia, meses[mes-1],year); else

cout << "\nError en la fecha\n"); }

else

cout << "\nError en el formato\n"); return 0;

Referencias

Documento similar

El coeficiente de correlación entre antenas se utiliza como métrica de rendimiento en sistemas de múltiples entradas y múltiples salidas (MIMO) para cuantificar

4.- Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, el carácter nulo par char, false para boolean, null para

Los Arreglos de Compuerta Programables de Campo (FPGAs) son componentes electrónicos comúnmente utilizados por manufactureros electrónicos para crear chips a la medida, permitiendo

Para arreglos en el edificio, para blanquear la fachada, para comprar una tierra, para reedificar una borda de ganado, para saldar unas deudas, para comprar una porción de

Él prepara arreglos florales de margaritas y tulipanes para venderlos este fin de semana.. Escribe en la tabla la cantidad de margaritas que necesita para elaborar los

Nuestros entrevistados son músicos cuyas bandas trabajan desde composiciones propias y/o desde arreglos a composiciones del cancionero popular tradicional y contemporáneo,

En cuanto a los procedimientos musicales dedicados a la composición y el desarrollo de arreglos característicos de la era del be bop, el análisis de la

Por todo lo anterior, el análisis de los arreglos institucionales que los acueductos comunitarios de las veredas de Alaska y Zanjón Hondo han llevado a cabo para la gestión del