Sei sulla pagina 1di 5

Universidad Politécnica de Chiapas

Ing. Biomédica. Programación Estructurada.


Arreglos en C

Cuatrimestre: Mayo-Agosto 2015. Profr. Alfonso Estudillo Romero.

Fecha: Miércoles 17 de Junio de 2015.

1. Introducción
Un arreglo se puede definir como un espacio de memoria de longitud n, donde n es el número
de elementos que contiene. Los elementos contenidos dentro de los arreglos se definen y
pertenecen a un mismo tipo de datos. Por ejemplo: un arreglo de enteros (int) de cierta
longitud contiene elementos que son solo de tipo int mientras que un arreglo de punto flotante
(double) contiene elementos que son solo de tipo (double). En lenguaje C la declaración de

Figura 1: Estructura de un arreglo en C. En este ejemplo el arreglo consta de 9 elementos.


Para acceder a una localidad de memoria se requiere de un ı́ndice. El ı́ndice = 0 indica
el comienzo del arreglo. Al variar el ı́ndice se puede acceder a las distintas localidades de
memoria. Por ejemplo, el valor del arreglo en el ı́ndice 2 es 3 y el valor del arreglo en el ı́ndice
5 es 4.

los arreglos es la siguiente:


/∗
∗ File : arreglos . c
∗ Author : A l f o n s o E s t u d i l l o Romero <a l f o n s o e r a t g m a i l . com>

1

∗ Created on June 17 , 2015 , 1 1 : 0 3 AM

∗ Description :
∗/

int main ( ) {
int ArregloA [ 6 ] ; // D e f i n e un a r r e g l o de 6 e l e m e n t o s de e n t e r o s
int ArregloB [ 1 0 ] ; // D e f i n e un a r r e g l o de 10 e l e m e n t o s de e n t e r o s
double X [ 2 0 0 ] ; // D e f i n e un a r r e g l o de 200 e l e m e n t o s de d o u b l e s
char A[ 1 0 0 0 ] ; // D e f i n e un a r r e g l o de 1000 e l e m e n t o s de c h a r s
}
Los arreglos son una estructura básica en la codificación de programas y son muy útiles para
el almacenamiento de datos en memoria.

2. Ejemplos
Problema: se cuenta con un arreglo de 10 elementos como el que se muestra en la Figura 2.
Haz un programa en C que separe los números pares de los nones y los guarde en dos arreglos
diferentes. El código que realiza todo el programa es el siguiente:

Figura 2: Separar pares y nones desde un arreglo a dos arreglos

/∗
∗ File : arreglos . c
∗ Author : A l f o n s o E s t u d i l l o Romero <a l f o n s o e r a t g m a i l . com>

∗ Created on June 18 , 2015 , 1 1 : 0 3 AM

2
Figura 3: Arreglos con los datos separados. Observe que el valor del ı́ndice del arreglo A
queda al final apuntando a una localidad de memoria no reservada para dicho arreglo.


∗ D e s c r i p t i o n : E s t e programa mueve p a r e s y nones
∗ de un a r r e g l o a dos a r r e g l o s s e p a r a d o s
∗/

#include < s t d l i b . h>


#include <s t d i o . h>

int main ( ) {
int A[ 1 0 ] = { 1 0 , 8 , 6 , 3 , 9 , 7 , 4 , 1 , 2 , 1 4 } ;
int p a r e s [ 1 0 ] ;
int nones [ 1 0 ] ;
int i n d i c e , cp , c i ;
c i =0; cp =0;
f or ( i n d i c e =0; i n d i c e <10; i n d i c e ++){
i f (A[ i n d i c e ] %2==0){
p a r e s [ cp ] = A[ i n d i c e ] ;
cp++;
} else {
nones [ c i ] = A[ i n d i c e ] ;
c i ++;
}
}
// Imprime l o s a r r e g l o s
p r i n t f ( ” Pares \n” ) ;
f or ( i n d i c e =0; i n d i c e <cp ; i n d i c e ++){

3
p r i n t f ( ” % d , ” , pares [ indice ] ) ;
} p r i n t f ( ”\n\n” ) ;
p r i n t f ( ” Nones \n” ) ;
f or ( i n d i c e =0; i n d i c e <c i ; i n d i c e ++){
p r i n t f ( ” % d , ” , nones [ i n d i c e ] ) ;
}
}
Problema: Modifica el programa anterior para capturar los datos desde el teclado, guardarlos
en el arreglo y después separar por nones y pares. El siguiente código resuelve el problema.
/∗
∗ File : arreglos . c
∗ Author : A l f o n s o E s t u d i l l o Romero <a l f o n s o e r a t g m a i l . com>

∗ Created on June 18 , 2015 , 1 1 : 0 3 AM

∗ D e s c r i p t i o n : E s t e programa mueve p a r e s y nones
∗ de un a r r e g l o a dos a r r e g l o s s e p a r a d o s
∗ Los d a t o s de l o s a r r e g l o s son c a p t u r a d o s d e s d e t e c l a d o .
∗/

#include < s t d l i b . h>


#include <s t d i o . h>

int main ( ) {
int A [ 1 0 ] ;
int p a r e s [ 1 0 ] ;
int nones [ 1 0 ] ;
int i n d i c e , cp , c i ;
p r i n t f ( ” Captura l o s d a t o s \n” ) ;
f or ( i n d i c e =0; i n d i c e <10; i n d i c e ++){
s c a n f ( ” % d” , &A[ i n d i c e ] ) ;
}
c i =0; cp =0;
f or ( i n d i c e =0; i n d i c e <10; i n d i c e ++){
i f (A[ i n d i c e ] %2==0){
p a r e s [ cp ] = A[ i n d i c e ] ;
cp++;
} else {
nones [ c i ] = A[ i n d i c e ] ;
c i ++;
}
}
// Imprime l o s a r r e g l o s

4
p r i n t f ( ” Datos o r i g i n a l e s \n” ) ;
f or ( i n d i c e =0; i n d i c e <10; i n d i c e ++){
p r i n t f ( ” % d , ” , A[ i n d i c e ] ) ;
}
p r i n t f ( ” Pares \n” ) ;
f or ( i n d i c e =0; i n d i c e <cp ; i n d i c e ++){
p r i n t f ( ” % d , ” , pares [ indice ] ) ;
} p r i n t f ( ”\n\n” ) ;
p r i n t f ( ” Nones \n” ) ;
f or ( i n d i c e =0; i n d i c e <c i ; i n d i c e ++){
p r i n t f ( ” % d , ” , nones [ i n d i c e ] ) ;
}
}
Problema: Investiga como ordenar los elementos del arreglo, durante la captura o bien
después de ser capturados, para que la impresión de los valores de todos los arreglos quede
en orden ascendente.

Potrebbero piacerti anche