Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Apuntes Unidad V
CONTENIDO
UNIDAD V ARREGLOS DE DATOS......................................................................2
V.1
V.2
V.3
V.4
OBJETIVOS:.............................................................................................. 2
INTRODUCCIN......................................................................................... 2
DECLARANDO Y ASIGNANDO VALORES A LOS ARREGLOS.............................2
REGLAS PARA ASIGNAR NOMBRES A LOS ARREGLOS...................................4
Arreglos de una dimensin o vectores............................................................5
Problemas propuestos.................................................................................5
Arreglos o tablas bidimensionales, o tipo matriz............................................6
Problemas propuestos.................................................................................9
Arreglos multidimensionales...........................................................................9
Problemas propuestos...............................................................................10
Arreglos de caracteres (listas).......................................................................11
Problemas propuestos...............................................................................13
V.5
ORDENAMIENTOS DE ARREGLOS..............................................................15
V.6
LLAMADAS A FUNCIONES CON ARREGLOS.................................................16
Materia: Programacin I
Apuntes Unidad V
Introduccin
int vector[5];
Materia: Programacin I
Apuntes Unidad V
Materia: Programacin I
Apuntes Unidad V
Materia: Programacin I
Apuntes Unidad V
Problemas propuestos
Disear un programa donde se pueda capturar una lista de calificaciones y se
calcule el promedio
Disear un programa donde se presente un men de opciones de Inventario y
reporte de ventas de un comercio
Materia: Programacin I
Apuntes Unidad V
#include <iostream.h>
#include <conio.h>
void main(void)
6
Materia: Programacin I
Apuntes Unidad V
{
int matriz[3][4],y;
clrscr();
for(int x=0 ; x < 3 x++)
{
for(y=0 y< 4 ; y++)
{
matriz[x][y]=x+y+1 ;
gotoxy(y+1,x+1);
print(%d matriz[x][y]);
}
}
}
Para procesar ( recordar solo operaciones y comparaciones) internamente todos
los elementos de la tabla se ocupan dos ciclos for() uno externo para controlar
rengln y uno interno para controlar columna.
Se declaran semejante a los de una dimensin solo que ahora se tomaran dos
subndices: tipo nombre_arreglo_bi[tamao][tamao];
El tamao en la declaracin de la matriz Renglon-Columna y se representaran
as:
Materia: Programacin I
Apuntes Unidad V
int calif[3][4];
long int ingresos [3][4];
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracion tabla
int calif[3][4];
int r,c,nc=5;
// capturando
printf("CALIFICACIONES \n");
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+2); printf("%d %d: ",r,c);
scanf("%d",&calif[r][c]);getchar();
nc=nc+10;
};
nc=5;
};
//operando
for ( r=0; r<=2; r++)
for(c=0;c<=3;c++)calif[r][c]=calif[r][c]+10;
//desplegando
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+6); printf("%d ",calif[r][c]);
nc=nc+10;
};
nc=5;
};
getchar();
}
Materia: Programacin I
Apuntes Unidad V
Problemas propuestos
1.- construir un cuadro que contenga los costos fijos de cuatro productos
cualesquiera, que se producen en tres plantas diferentes de una empresa
maquiladora.
2.- construir un cuadro que contenga los ingresos mensuales por ventas durante
los tres primeros meses del ao de cuatro sucursales de una cadena de auto
refacciones, agregar al final una lista que muestre los ingresos mensuales
totales por meses y una segunda lista que muestre los ingresos mensuales
totales por sucursal.
3.-construir un cuadro que contenga las comisiones ganadas por tres
vendedores, de los 5 tipos de linea blanca de conocida muebleria, ademas listas
de comisiones totales y promedios ganadas por los vendedores, asi como listas
de comisiones totales y promedios por tipo de linea blanca.
analizar este segmento de codigo:
for r = 0 to 3
for c = 0 to 2
totreng(r) = totreng(r) + tabla(r,c)
next c
promreng(r) = totreng(r)/3
next r
'para totales y promedios por columna
for c = 0 to 2
for r = 0 to 3
totcol(c)=totcol(c) + tabla(r,c)
next r
promcol(c) = totcol(c) / 4
next c
Arreglos multidimensionales
Se pueden construir arreglos Multidimensionales Ej.:
int grande[3][4][7];
Int CURP [5][7][8][2][3][2];
Se debe de tener cuidado al manejar estos arreglos por que son complejos de
manipular a la larga. A pesar de ser Bidimensionales, en la memoria siguen
siendo representados como espacios secuenciales lineales.
Se recomienda usar siempre un ciclo for con una variable de control llamada
rengln, misma que tambin se usa como ndice del arreglo.
Recordar que el primer rengln o ndice en CPP es el rengln 0.
Materia: Programacin I
Apuntes Unidad V
Siempre que se use un elemento de una lista en Cpp con cualquier proceso
(captura, despliegue, operaciones)deber acompaarse de su ndice respectivo.
Para procesar (hacer operaciones con ellos, o comparaciones, etc) los
elementos de la lista, se deber usar un ciclo for con una variable de control
llamada rengln, misma que se usara tambin como ndice de la lista.
Para desplegar los elementos de la lista, tambin se usa un ciclo for con su
variable de control rengln, tal como se muestra en el siguiente ejemplo.
El mismo ciclo de proceso o despliegue se puede utilizar para procesar o
desplegar los elementos de mas de una lista, siempre y cuando las listas sean
del mismo tamao.
Ejemplo:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracion listas
char nombre[3][20]; int edad[3];
// capturando
for (int r=0; r<=2; r++)
{ gotoxy(5, r*2+2); printf("%d NOMBRE: ",r);gets(nombre[r]);
gotoxy(5, r*2+3); printf("%d EDAD: ",r);
scanf("%d",&edad[r]);getchar();
};
//procesando
for ( r=0; r<=2; r++) edad[r]=edad[r] *12;
//desplegando
for ( r=0; r<=2; r++)
{ gotoxy(5, r*2+9); printf("NOMBRE:= %s", nombre[r]);
gotoxy(5, r*2+10); printf("EDAD:=%d",edad[r]);
};
getchar();
}
Problemas propuestos
1.- Capturar y desplegar 5 precios de productos cualesquiera.
2.- Capturar 4 sueldos y desplegarlos aumentados en un 25%
10
Materia: Programacin I
Apuntes Unidad V
11
Materia: Programacin I
Apuntes Unidad V
12
Materia: Programacin I
Apuntes Unidad V
13
Materia: Programacin I
Apuntes Unidad V
#include <string.h>
a) STRCPY(string destino,string original);
Se utiliza para copiar el contenido de un string original en un string de destino.
ejemplo:
char nombre[30],copia[30];
nombre= getstring("nombre");
strcpy(copia,nombre);
strcpy(nombre,"pato");
b) STRCAT(string1,string2);
Encadena o agrega al final de la string1 la string2.
ejemplo: char nombre[30],copia[30];
strcpy(nombre,"pepe");
strcat(nombre,"lopez");
c) STRCMP(string1,string2);
Se utiliza para comparar 2 strings, esta funcin regresa cero si ambas strings
son iguales, regresa un numero mayor que cero si string 1 es mayor que string 2
y regresa un numero menor que cero si string 1 es menor alfabeticamente que
string 2.
ejemplo:
char opcion[3];
strcmp(opcion,"si");
if(strcmp(opcion,"si")==0)
c) STRLEN(string);
Esta funcin regresa la cantidad de caracteres que tiene la string.
ejemplo:
char nombre[30];
strcpy(nombre,"juan");
printf("%d",sizeof(nombre));---->REGRESA 30
printf"%d",strlen(nombre));---->REGRESA 4
14
Materia: Programacin I
V.5
Apuntes Unidad V
Ordenamientos de arreglos
Ord crec
Ord
decr
15
15
10
10
10
15
Materia: Programacin I
Apuntes Unidad V
V.6
16
Materia: Programacin I
Apuntes Unidad V
main()
{
float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9};
printf("El promedio de la lista es %f\n", enconprom(7,numeros) );
}
Para el caso de que se tenga que pasar un arreglo con ms de una dimensin,
no se indica la primera dimensin pero, el resto de las dimensiones deben
sealarse. Se muestra a continuacin un ejemplo:
void imprtabla(int tamx,int tamy, float tabla[][5])
{
int x,y;
for ( x=0; x<tamx; x++ )
{
for ( y=0; y<tamy; y++ )
printf("t[%d][%d]=%f",x,y,tabla[x][y]);
printf("\n");
}
}
RESUMEN
Un arreglo es una coleccin de variables que son del mismo tipo de datos
En c el ndice para un arreglo comienza en 0
Puede inicializar cada elemento de un arreglo despus de declararlo, o puede
poner todos los valores iniciales, separados por comas, dentro de bloque de
datos encerrados entre llaves al mismo tiempo de declararlo
El espacio de memoria que ocupa un arreglo esta determinado por la
multiplicacin del tamao del tipo de datos por las dimensiones del arreglo
Se dice que un apuntador hace referencia a un arreglo cuando la direccin del
primer elemento del arreglo se asigna al apuntador. La direccin del primer
elemento de un arreglo tambin se conoce como direccin de inicio del arreglo.
Para asignar la direccin de inicio de un arreglo a un apuntador puede poner la
combinacin del operador de direccin (&) y el nombre del primer elemento del
arreglo o simplemente usar el nombre del arreglo a la derecha del operador de
asignacin ( = )
El carcter nulo (\0) marca el final de una cadena. Las funciones de c, como
printf() detendrn el procesamiento de la cadena al encontrar el carcter nulo
C tambin maneja arreglos multidimensionales. Un par de corchetes vaco( el
operador de subndices de arreglo [y] indica una dimensin
17
Materia: Programacin I
Apuntes Unidad V
18