![Page 1: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/1.jpg)
1
ARREGLOSUNIDAD 2PROGRAMACIÓN
Primavera 2009
![Page 2: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/2.jpg)
Contenido
Definición
Procesamiento de Arreglos
2
Paso de Parámetro a funciones
Cadenas y caracteres
Arreglos multidimensionales
![Page 3: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/3.jpg)
Introducción
� Una variable puede almacenar un valor único. Ejemplo� a = 5;� contador = 0;
� Si el número de valores a guardar es mayor a 5 necesitamos una estrategia diferente
3
� contador = 0;
� Si necesitamos 5 valores diferentes del mismo tipo, usaríamos 5 variables� int a,b,c,d,e ;
diferente
� Los arreglos nos permitirán definir conjunto de valores del mismo tipo
![Page 4: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/4.jpg)
Arreglo
� Un arreglo es una colección finita y homogénea de datos.
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9D
4
� 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
0 1 2 3 4 5 6 7 8 9
![Page 5: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/5.jpg)
Definición
� Un arreglo se define de la siguiente forma:
tipo nombre_del_arreglo[expresion]
5
Tipo de datos:intfloatchar
Nombre de la variable
Indica la cantidad de elementos del arreglo
![Page 6: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/6.jpg)
Ejemplo
SIZE = 10;
int A[10];
int B[SIZE];
int C[SIZE*2];
6
int C[SIZE*2];
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
![Page 7: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/7.jpg)
Arreglo
� El compilador se encarga de reservar el espacio en memoria necesario para almacenar los datos del arreglo
7
A
15
23
8
14
0
A[0]
A[1]
A[2]
A[3]
A[4]
![Page 8: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/8.jpg)
Inicialización8
int A[10] = {15,23,8,14,0,-6,11,4,-5,8}
15 23 8 14 0 -6 11 4 -5 8A
int A[] = {15,23,8,14,0,-6,11,4,-5,8}
15 23 8 14 0 -6 11 4 -5 8A
![Page 9: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/9.jpg)
Inicialización9
int A[10] = {15,23}
15 23 0 0 0 0 0 0 0 0A
int A[10] = {}
0 0 0 0 0 0 0 0 0 0A
![Page 10: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/10.jpg)
Definición de Constantes10
� 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 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
![Page 11: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/11.jpg)
Ejemplo11
� Escriba un programa en el cual lea 10 números enteros y almacénelos en un arreglo
� Pida un número y búsquelo dentro del arreglo
![Page 12: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/12.jpg)
Ejemplo12
#include <stdio.h>
#include <stdlib.h>
#define size 10
int main()
{
int i,num,freq=0;
int arreglo[size]={};
for (i=0;i< size;i ++){for (i=0;i< size;i ++){
printf(“Arreglo[%d] =”); scanf(“%d”,&arreglo[i]);
}
printf(“Proporcione el número que va a buscar ”);
scanf (“%d”,&num);
for(i=0;i<size;i++){
if(arreglo[i] == num) freq++;}
printf(“El número %d se encuentra %d veces en el ar reglo”, num, freq);
system(“pause”);
return 0;
}
![Page 13: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/13.jpg)
Ejemplo13
� 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 � Calcule la desviación de la media para cada número
![Page 14: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/14.jpg)
Ejemplo14
#include <stdio.h>
#include <stdlib.h>
#define size 100
int main()
{
int i,n;
float media=0,num[size]={};
// lea los números
printf(“Proporcione la cantidad de números a leer ” );scanf (“%d”,&n);
for(i=0;i<n;i++){
printf (“Lista[%d] =”); scanf (“% f”,&num [i]);printf (“Lista[%d] =”); scanf (“% f”,&num [i]);
media += num[i];
}
// calcule la media
media = media/n; printf(“La media es %f\n”,media);
// calcule la desviación de la media para cada mues tra
printf(“La desviacion por muestra es\n”)
for(i=0;i<n;i++)
printf(“i = %d\t x = %f\t d = %f\n”,i, num[i] , num[i]-media );
system(“pause”);
return 0;
}
![Page 15: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/15.jpg)
Ejemplo15
� 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 � 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
![Page 16: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/16.jpg)
Ejemplo16
#include <stdio.h>#include <stdlib.h>
#define size 100
int main(){
int i,n,max;int cal[size],freq[6];// lea los números// lea los númerosprintf(“Proporcione la cantidad de calificaciones ” );scanf (“%d”,&n);printf(“Proporcione las calificaciones (5 -10)”)for(i=0;i<n;i++){
printf(“calificación[%d] =”); scanf(“%d”,&cal[i]); }
// calcule la frecuencia
for(i=0;i<n;i++)freq[cal[i]-5]++;
![Page 17: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/17.jpg)
Ejemplo17
// determine la maxima frecuencia
max = freq[0]; indice = 0;
for(i=1; i < 6; i++)
if (max < freq[i]){
max = freq[i];
indice = i;}
// imprima las frecuencias
printf(“Las frecuencias de las calificaciones son:\n”);
for(i=0; i < 6; i++)
printf(“Existen %d alumnos con %d”, freq[i],i+5);
printf(“La calificación con mayor frecuencia es %d con %d alumnos”,indice+5,max);
system(“pause”);
return 0;
}
![Page 18: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/18.jpg)
Paso de arreglo como parámetro18
� 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 originalpor 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
![Page 19: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/19.jpg)
Ejemplo19
void lectura( int A[], int size )
{
for (int i=0; i < size ; i++)
{{
printf (“dato %d = ”,i);
scanf (“% d”,&A [i]);
}
}
![Page 20: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/20.jpg)
Ejemplo20
void imprime( int A[], int size )
{
for (int i=0; i < size ; i++)
printf (“dato %d = ”,i, A[i]);printf (“dato %d = ”,i, A[i]);
}
![Page 21: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/21.jpg)
Ejemplo21
void frecuencia(int f[], int A[], int size)
{
for(int i=0; i < size; i++)
f[A[i]-5]++;
}
![Page 22: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/22.jpg)
Ejemplo22
int maximo(int A[],int size){
int max = A[0];int indice = 0;for(int i=1; i < size; i++)
if ( max < A[i])if ( max < A[i]){max = A[i];indice = i;}
return indice;}
![Page 23: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/23.jpg)
Ejemplo23
#include <stdio.h>
#include <stdlib.h>
#define size 100
void lectura(int A[],int size);
void imprime(int A[],int size);
void frecuencia(int f[], int A[], int size);
int maximo(int A[],int size)
int main()
{
int i,n,max;
int cal[ size ], freq [5];int cal[ size ], freq [5];
// lea los números
printf(“Proporcione la cantidad de calificaciones ” );
scanf (“%d”,&n);
printf(“Proporcione las calificaciones (5 -10)”)
lectura(cal,n); //lectura de calificaciones
frecuencia(freq,cal,n); // calcule la frecuencia
max = maximo(freq,6); // obtenga la máxima frecuencia
imprime(freq,6); // imprima las frecuencias
printf(“La calficacion con la maxima frecuencia %d es %d\n”,max+5, freq[max]);
system(“pause”);
return 0;
}
![Page 24: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/24.jpg)
Ejercicio24
� Escriba una función que calcule la media de una lista de números enteros
� La función debe recibir como parámetros de � 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
![Page 25: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/25.jpg)
Solución25
float media( float A[], int size )
{
int i;
float suma=0;float suma=0;
for (i=0; i < size ; i++)
suma+=A[i];
return (suma/ size );
}
![Page 26: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento](https://reader030.vdocuments.site/reader030/viewer/2022020205/5bc57b8209d3f229078d2bff/html5/thumbnails/26.jpg)
Ejemplo26
#include <stdio.h>
#include <stdlib.h>
#define size 100
float media(float A[], int size);
int main()
{
int i,n;
float m,num[size]={};
// lea los números
printf (“Proporcione la cantidad de números a leer ”); scanfprintf (“Proporcione la cantidad de números a leer ”); scanf(“%d”,&n);
lectura(num,n);
m = media(num,n) // calcule la media
printf(“La media es %f\n”,m);
// calcule la desviación de la media para cada mues tra
printf(“La desviacion por muestra es\n”)
for(i=0;i<n;i++)
printf(“i = %d\t x = %f\t d = %f\n”,i, num[i] , num[i]-m );
system(“pause”);
return 0;
}