Está en la página 1de 7

Ing.

Ricardo Castañeda

UNIVERSIDAD NACIONAL DE INGENIERÍA


FACULTAD DE INGENIERÍA MECÁNICA

PROFESOR : RICARDO CASTAÑEDA DE LA ROSA

2011
-1-

ARREGLOS EN LENGUAJE “C”


7.1 Definición.- Es una colección de elementos del mismo tipo; se dice también que es
una estructura homogénea. Su declaración se realiza indicando al compilador sus
características que son tipo nombre y tamaño. Ejemplo:
int datos[10]; la información que se entrega al compilador será:
Ing. Ricardo Castañeda

 Nombre del arreglo: datos


 Tipo de componente: variable simple entera
 Tamaño 10 elementos
 Nombre de las componentes datos[0], datos[1], datos[2],
datos[3],.......datos[9].
7.2 Acceso a elementos.- Los elementos de un arreglo se designan con un subíndice
que comienza en cero: int a[4] : a[0], a[1], a[2], a[3].
Un arreglo se puede inicializar así : int a[4] = { 20, 25, 35, 40}
a[0] 20

a[1] 25

a[2] 35

a[3] 40
7.3 Operaciones con Arrays unidimensionales (vectores).- Las operaciones iniciales
son las de lectura y escritura, las cuales vamos a ver en el siguiente programa.
/* Programa que crea e imprime un for ( i=1; i<=n;i++)
vector de n valores enteros- Operaciones
básicas */ { cout<< " Ingrese valor "<< i<<" : ";
# include<iostream.h>
cin>> vector[i];
# include<conio.h>
}
void main( )
{ int vector[50];
clrscr();//Escritura

int i, n; for ( i=1; i<=n;i++)

clrscr(); {
//Lectura cout<< vector[i]<< endl;
cout << " Ingrese n => "; } getch();
cin >> n; }
Ing. Ricardo Castañeda

Operaciones con arreglos: Las demás operaciones las vamos a ver en un menú que será
de la siguiente manera:
/* Programa que crea un menú para manejo de operaciones con arreglos */
# include<iostream.h>
# include<conio.h>
void lectura(int v[50], int *n);
void adicion(int v[50], int *n);
void eliminacion(int v[50], int *n);
void busqueda(int v[50], int n);
void sorteo(int v[50], int n);
void escritura(int v[50], int n);

void main( )
{ int vector[50];
int n;
char opcion;
clrscr();
do {
clrscr();
gotoxy(30,2); cout<< "MENU ARREGLOS";
gotoxy(30,5); cout<< "1.- Lectura";
gotoxy(30,6); cout<< "2.- Adición";
gotoxy(30,7); cout<< "3.- Eliminación";
gotoxy(30,8); cout<< "4.- Búsqueda";
gotoxy(30,9); cout<< "5.- Ordenar";
gotoxy(30,10); cout<<"6.- Escritura";
gotoxy(30,11); cout<< "7.- Salir";
gotoxy(25,16); cout<< "Ingrese opción ==> ";
cin>>opcion;
switch(opcion)
{ case '1' : lectura(vector, &n);break;
case '2' : adicion(vector, &n);break;
case '3' : eliminacion(vector, &n);break;
case '4' : busqueda(vector, n);break;
case '5' : sorteo(vector, n);break;
case '6' : escritura(vector, n);break;
}
}while(opcion != '7'); }
void lectura(int v[50], int *n)
{ int i;
clrscr();
cout << " Ingrese n => "; cin >> *n;
for ( i=1; i<=(*n);i++)
Ing. Ricardo Castañeda

{ cout<< " Ingrese valor "<< i<<" : "; cin>> v[i];


} }
void adicion(int v[50], int *n)
{ int i,j,x;
clrscr();
cout<<"Ingrese posición de inserción: "; cin>> j;
cout<<"Ingrese valor a insertar : ";
cin>> x;
for( i=(*n);i>=j;i--)
v[i+1] = v[i];
v[j] = x;
(*n)=(*n) +1;
}
void eliminacion(int v[50], int *n)
{ int i,j;
clrscr();
cout<<"Ingrese posición de valor a eliminar : ";
cin>> j;
for( i=j+1 ; i<=(*n);i++)
v[i-1] = v[i];
(*n)=(*n) - 1;
}
void busqueda(int v[50], int n)
{ int i,x, pos;
clrscr();
cout<<"Ingrese valor a buscar : ";
cin>> x;
for( i=1;i<=n;i++)
if ( v[i]== x)
{ pos = i;
break ; }
if ( v [i ]== x)
cout<< " Valor hallado en posición: "<<pos;
else
cout<< " Valor no hallado ";
getch();
}
void sorteo(int v[50], int n)
{ int i,j,temp;
for ( i=1; i<n ;i++)
for (j=i+1;j<=n;j++)
if( v[i]> v[j])
{ temp = v[i];
Ing. Ricardo Castañeda

v[i] = v[j];
v[j] = temp ;
}
}
void escritura(int v[50], int n)
{int i;
clrscr();
for ( i=1; i<=n;i++)
{ cout<< v[i]<< endl; }

getch(); }

ARREGLOS DE DOS DIMENSIONES( MATRICES)


I. Definición.- Una matriz es un arreglo de 2 dimensiones donde el primer subíndice
indica fila y el segundo subíndice indica columna. Consideremos la siguiente
declaración: const maxf = 10;
. const maxc = 20;
. float matriz [maxf] [maxc] ;
Estamos declarando una matriz de 10 filas por 20 columnas. La primera fila será :
matriz[0] [[0], matriz[0][1], matriz[0][2],......................, matriz[0][19].
II. Lectura de una matriz, el procedimiento para leer una matriz será:
void leer(int x[20][20],int *nf, int *nc)
{
int i, j ;
clrscr( );
cout<<"Ingrese # filas de la matriz: "; cin>> *nf;
cout<<"Ingrese # columnas de la matriz: "; cin>> *nc;
randomize();
for(i = 1; i<=(*nf); i++)
for(j =1;j<=(*nc); j++)
x[i][j]=random(10);

III. Escritura de una matriz, el procedimiento para mostrar una matriz será:
void mostrar(int x[20][20], int nf, int nc)
{
int i, j ;
for(i=1; i<=n; i++)
{for(j=1; j<=n; j++)
cout<<x [i] [j] << " ";
cout<<endl;
}
getch( );
Ing. Ricardo Castañeda

IV. Procedimiento para multiplicar una matriz


/* MULTIPLICACION DE MATRICES */

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>

void leer(int x[20][20],int *n);


void m_mat(int x[20][20],int n1,int b[20][20],int n2,int c[20][20], int
*n3);
void mostrar(int x[20][20],int n);
void main()
{
int n1,n2,n3;
int a[20][20],b[20][20],c[20][20];
leer(a,&n1);
leer(b,&n2);
m_mat(a,n1,b,n2,c,&n3);
}

void leer(int x[20][20],int *n)


{
int i,j;
cout<<"Ingrese el orden de la matriz: ";cin>>*n;
randomize();
for(i=1;i<=(*n);i++)
for(j=1;j<=(*n);j++)
x[i][j]=random(10);

mostrar(x,*n);
}
void m_mat(int x[20][20],int n1,int b[20][20],int n2,int c[20][20], int *n3)
{
int i,j,k;
cout<<"\nEl producto de las matrices es:"<<endl;
if(n1==n2)
{ for(i=1;i<=n1;i++)
for(j=1;j<=n2;j++)
{ c[i][j]=0;
Ing. Ricardo Castañeda

for(k=1;k<=n1;k++)
c[i][j]=c[i][j]+x[i][k]*b[k][j];
}
*n3=n1;
*n3=n2;
mostrar(c,*n3);

}
else
cout<<"Matrices no se pueden multiplicar";getch();
}
void mostrar(int x[20][20],int n)
{
int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<x[i][j]<<" ";
cout<<endl;
}
getch( );
}

También podría gustarte