arreglos unidad 2 programaciÓn -...
Post on 16-Oct-2018
233 Views
Preview:
TRANSCRIPT
1
ARREGLOSUNIDAD 2PROGRAMACIÓN
Primavera 2009
Contenido
Definición
Procesamiento de Arreglos
2
Paso de Parámetro a funciones
Cadenas y caracteres
Arreglos multidimensionales
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
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
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
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
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]
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
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
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
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
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;
}
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
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;
}
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
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]++;
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;
}
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
Ejemplo19
void lectura( int A[], int size )
{
for (int i=0; i < size ; i++)
{{
printf (“dato %d = ”,i);
scanf (“% d”,&A [i]);
}
}
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]);
}
Ejemplo21
void frecuencia(int f[], int A[], int size)
{
for(int i=0; i < size; i++)
f[A[i]-5]++;
}
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;}
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;
}
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
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 );
}
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;
}
top related