• No se han encontrado resultados

Se definen como variables comunes y corrientes

N/A
N/A
Protected

Academic year: 2018

Share "Se definen como variables comunes y corrientes"

Copied!
50
0
0

Texto completo

(1)

ARREGLOS

(2)

Definición de arreglos

Definición de arreglos

Se definen como variables comunes y

corrientes

Pueden ser locales, globales y parámetros.

Tienen un nombre que debe seguir la restricciones

de toda variable.

El nombre debe ser unico dentro del contexto

Tienen un tipo específico.

Además

Definen un tamaño.

(3)

Definición de arreglos

Definición de arreglos

<tipo> <nombre> [<tamaño>];

Cualquier

tipo válido

Cualquier

nombre válido

Corchetes

obligatorios

Constante que

especifica el

tamaño

tamaño

int notas

[

10000

]

;

(4)

Definición de arreglos

Definición de arreglos

El tamaño debe ser constante

No se pueden utilizar variables para

especificar el tamaño.

Se

pueden

utilizar

constantes

de

Se

pueden

utilizar

constantes

de

(5)

Definición de arreglos

Definición de arreglos

int tamagno=10000;

#define tamagno 10000

int notas[tamagno];

int notas[tamagno];

(6)

Acceso a arreglos

Acceso a arreglos

Como los arreglos definen “grupos”, es

importante poder acceder a los “integrantes”

del arreglo.

Cada “integrante” se representa por un indice

secuencial. Se les llama elementos.

secuencial. Se les llama elementos.

El índice varia entre 0 y tamaño-1

Cada elemento es una variable común y

silvestre.

(7)

Acceso a arreglos

Acceso a arreglos

<arreglo>[<indice>] = <sentencia>;

Modificacion el elemento correspondiente al indice

<variable> = <arreglo>[<indice>];

(8)

Acceso a arreglos

Acceso a arreglos

int notas[10000];

notas[0]=0;

printf(“%d\n”,notas[0]);

notas[1]=notas[0]+1;

Primer elemento del arreglo “notas”

Recupera el valor del primer elemento

Modifica el valor de la

segunda variable

notas[1]=notas[0]+1;

printf(“%d\n”,notas[1]);

notas[10000]=notas[9999]+1;

printf(“%d\n”,notas[10000]);

(9)

Ejemplo 1. IMPRESIÓN DE UN

Ejemplo 1. IMPRESIÓN DE UN

ARREGLO

ARREGLO

int main(){ int numeros[10]; int i; numeros[0]=0; for(i=1;i<10;i++)

0

1

2

3

4

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

numeros[i]=numeros[i-1]+1;

(10)

Ejemplo 2. Insertar datos

Ejemplo 2. Insertar datos

int main(){

int numeros[10]; int i;

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

scanf("%d",&numeros[i]);

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

printf("%d\n",numeros[i]);

(11)

Ejemplo 3. sumar elementos

Ejemplo 3. sumar elementos

#include <math.h> #define N 4

int main(){

int numeros[N]; int i;

int i;

double sum;

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

scanf("%d",&numeros[i]);

sum=0;

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

sum = sum + numeros[i]; }

(12)

Ejemplo 4. encontrar máximo y

Ejemplo 4. encontrar máximo y

mínimo

mínimo

#include <math.h> #define N 4

int main(){

int numeros[N]; int i;

int maximo, minimo; int maximo, minimo;

minimo=1000; maximo=0;

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

if(numeros[i]<minimo)

minimo=numeros[i]; if(numeros[i]>maximo)

(13)

Ejemplo 1

Ejemplo 1

int main(){ int numeros[10]; int i; numeros[0]=0;

0

1

2

3

numeros[0]=0; for(i=1;i<10;i++)

numeros[i]=numeros[i-1]+1;

(14)

Ejemplo 2

Ejemplo 2

int main(){

int numeros[10]; int i;

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

scanf("%d",&numeros[i]);

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

printf("%d\n",numeros[i]);

(15)

Ejemplo 3

Ejemplo 3

int main(){

int numeros[10]; int i;

int*p;

for(p=numeros;p<(numeros+10);p++) scanf("%d",p);

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

printf("%d\n",numeros[i]);

(16)

Ejemplo 4

Ejemplo 4

int main(){

int numeros[10]; int i;

int*p;

numeros[0]=0;

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

numeros[i]=numeros[i-1]+1;

for(p=numeros;p<(numeros+10);p++) printf("%d\n",*p);

(17)

Arreglos de carácteres

Arreglos de carácteres

Las palabras se pueden ver como “grupos” de

carácteres en una secuencia.

¡Si definimos el tipo como “char”, un arreglo es un

palabra!

Existen manejos específicos para arreglos de

carácteres.

carácteres.

Los arreglos de carácteres se denominan

cadenas de carácteres

” o “

strings

”.

El carácter ‘\0’ (representado por el número

(18)

Arreglos de carácteres

Arreglos de carácteres

Las cadenas de carácteres tienen un largo

máximo.

El tamaño del arreglo limita el largo de las

palabras/frases.

Cuando no se sabe el largo maximo se usan

Cuando no se sabe el largo maximo se usan

punteros a char

char*

hay que asignar memoria en tiempo de ejecución.

(19)

Arreglos de carácteres

Arreglos de carácteres

h

o

l

a

\0

“hola”

char palabra[5]

char[0]=‘h’;

char[1]=‘o’;

char[2]=‘l’;

h

o

l

a

\0

(20)

Arreglos de carácteres

Arreglos de carácteres

int main(){

int i;

char palabra[32];

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

palabra[i]=65+i;

palabra[4]=0;

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

printf("%c",palabra[i]); printf("\n");

(21)

Arreglos de carácteres

Arreglos de carácteres

int main(){

int i;

char palabra[32];

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

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

palabra[i]=65+i;

printf("%s\n",palabra);

palabra[4]=0;

printf("%s\n",palabra);

return 1;

}

(22)

Funciones de cadenas

Funciones de cadenas

Definidas en <string.h>

strcpy(c1,c2)

Copia c1 en c2

strcpy(c1,c2)

Copia c1 en c2

strcat(c1,c2)

Concatena c2 al final de c1

strlen(c1)

Cálcula el largo de c1

strcmp(c1,c2)

Compara c1 con c2

(23)

Funciones de cadenas

Funciones de cadenas

#include <stdio.h> #include <conio.h> #include <string.h> int main(){

int i;

char palabra1[32], palabra2[32]; printf("Ingrese palabra 1: "); scanf("%s",palabra1);

printf("Ingrese palabra 2: "); scanf("%s",palabra2);

printf("%s vs %s\n",palabra1,palabra2); printf("Iguales? %s\n",

(strcmp(palabra1,palabra2)==0?"si":"no"));

printf("Largos: %d y %d\n", strlen(palabra1), strlen(palabra2));

printf("Concatenacion: %s\n", strcat(palabra1, palabra2)); getche();

(24)

Ordenación

Ordenación

Es un proceso que altera el orden de los

elementos de un conjunto.

Tiene asociada una relación de orden

Números: valor

Letras: alfabeto

Letras: alfabeto

La ordenación puede ser ascendente o

(25)

Ordenación

Ordenación

Métodos

Burbuja (Bubble sort)

Selección

Inserción

Inserción

Burbuja bidireccional

(26)

Bubble sort

Bubble sort

Los elementos más

pesados

” “

bajan

Los elementos más

livianos

” “

suben

livianos

” “

suben

Cuando ya no puede

(27)

Bubble sort

Bubble sort

r

a

1-Como r

es más “pesada” que a,

r

“baja” y a

“sube”

a

r

a

c

2-Como r

es más “pesada” que c,

r

“baja” y c

“sube”

(28)

Bubble sort

Bubble sort

void bubblesort(int numeros[]){

int i,j;

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

for(j=0;j<(N-i);j++)

if(numeros[j]>numeros[j+1]){

if(numeros[j]>numeros[j+1]){

int aux = numeros[j+1];

numeros[j+1] =

numeros[j];

numeros[j] = aux;

}

(29)

Selección

Selección

Se selecciona el minimo valor entre los N

elementos y se intercambia con el

primero.

Se repite la operación con los N-1

Se repite la operación con los N-1

(30)

Selección

Selección

void selectionsort_up(int numeros[]){ int i,j,k,r; int n; int inter; for(i=0;i<N-1;i++){ inter=0; k=i; n=numeros[i]; n=numeros[i]; for(j=i+1;j<N;j++) if(numeros[j]<n){ r=j; n=numeros[j]; inter=1; } if(inter){

(31)

Inserción

Inserción

Ordena el subarreglos de manera

creciente

Ordena los primeros dos elementos

Luego va insertando los siguientes en su

Luego va insertando los siguientes en su

(32)

Inserción

Inserción

void insertionsort_up(int numeros[]){

int i,j;

int n;

for(i=1;i<N;i++){

n=numeros[i];

for(j=i-1; (j>=0)&&(n<numeros[j]) ;j--)

numeros[j+1] = numeros[j];

numeros[j+1] = numeros[j];

numeros[j+1] = n;

(33)

Búsqueda

Búsqueda

Consiste en buscar un elemento dentro de un

conjunto

Requiere de una relación de igualdad

Números: Igual valor

Números: Igual valor

¿Cuántos decimales considerar?

Letras: mismo símbolo

¿Mayusculas y minúsculas?

Autos

Modelo y año

Placa patente

Codigo chasis

(34)

Búsqueda

Búsqueda

Métodos

Secuencial

(35)

Búsqueda secuencial

Búsqueda secuencial

Recorrer uno por uno los elementos.

Comparar según sea el criterio.

Se puede querer recuperar el valor o ela

posición.

posición.

(36)

Búsqueda secuencial

Búsqueda secuencial

int secuencial_search(int numeros[], int

valor){

int i=0;

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

if(numeros[i]==valor) return i;

return -1;

return -1;

(37)

Búsqueda secuencial

Búsqueda secuencial

En arreglos bidimensionales el algortimo

es similar.

Se puede hacer por filas o por columas.

Esta decision puede afectar el

Esta decision puede afectar el

rendimiento

(38)

Arreglos multidimensionales

Arreglos multidimensionales

1x3

3x3x2

Arreglo de tres variables

3x3

Arreglo de 18 variables

(39)

Arreglos multidimensionales

Arreglos multidimensionales

Las dimensiones en los arreglos se

agregan con mas pares de corchetes.

Nos limitaremos a ejemplos de matrices

(40)

Arreglos multidimensionales

Arreglos multidimensionales

A[ fila][columna]

Fila del arreglo

Columna del arreglo

B[fila][columna][prof]

(41)

A

Arreglos multidimensionales

Arreglos multidimensionales

B[0][0]

B[0][1]

B[0][2]

A

B

A[0]

A[1]

A[2]

(42)

Ejemplo 1

Ejemplo 1

#include <stdio.h>

#define N 5

int main(){

int B[N][N];

int B[N][N];

int i, j;

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

for(j=0;j<N;j++)

B[i][j]=0

;

return 1;

(43)

Ejemplo 2

Ejemplo 2

#include <stdio.h>

#define N 5

int main(){

int maiz[N][N]; for(i=0;i<N;i++){ for(i=0;i<N;i++){

for(j=0;j<N;j++)

printf("%10d ",maiz[i][j]); printf("\n");

}

(44)

Ejemplo 3

Ejemplo 3

#include <stdio.h>

#define N 5

int main(){

int maiz[N][N]; int i, j;

int cantidad=1; for(i=0;i<N;i++)

for(j=0;j<N;j++){

maiz[i][j]=cantidad; cantidad*=2;

} …

(45)
(46)

# include <iostream.h> # include <conio.h> main()

{

int k,j,f=17,c; int mat[100][100]; int mat_res[100][100];

cout<<"Digite tamaño de la matriz“;cin>>c; cout<<"ASIGNAR VALORES A LA MATRIZ"; for(k=0;k<c;k++)

{

for(j=0;j<c;j++) {

cout<<"introduzca un valor entero"<<" fila "<< k <<" columna " << j; cin>>mat[k][j];

} }

MATRIZ TRASPUESTA

}

cout<<"traspuesta de la matriz"; for(k=0;k<c;k++)

{

for(j=0;j<c;j++) {

mat_res[k][j]=mat[j][k];

(47)
(48)
(49)
(50)

Ejercicios

1.

Almacene en una matriz de 10X10 (máx.), un conjunto de números enteros

positivos y encuentre el elemento mayor de la matriz y decir en qué posición

lo encontró.

Referencias

Documento similar

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

Sin embargo, esta interpretación ecomorfológica cuenta con una evidencia en contra, ya que en venta Micena está presente una especie de Praeovibos que exhibe también una gran

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

seleccionados es la frecuencia con que se menciona la percepción de la familia, por lo tanto, se hace necesario incluir esta como una tercera categoría para el presente proyecto.

La disciplina de comprometerse a dar el diezmo es también el punto de partida para un estilo de vida de generosidad.. Tal como Jesús enseñó, es el mejor aliento posible para

Al mismo tiempo sería im- portante conservar de esa reli- giosidad cierta dimensión contemplativa, cierto hablar y rezar concreto, y un ritmo más cercano de la tierra y sus

Primera edición: abril de 2003 Decimonovena edición: junio de 2016 Edición ejecutiva: Paloma Jover Revisión editorial: Carolina Pérez Coordinación gráfica: Lara Peces..