Sei sulla pagina 1di 14

Arreglos

Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en posiciones consecutivas
de memoria y reciben un nombre comn. Para referirse a un determinado elemento de un array se deber
utilizar un ndice, que especifique su posicin relativa en el array. El ndice de un arreglo comienza en 0.
Un arreglo es una coleccin finita, homognea y ordenada de elementos.
Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul ser el nmero mximo de
elementos que podrn formar parte del arreglo.
Homognea: Todos los elementos del arreglo deben ser del mismo tipo. Ordenada: Se puede determinar
cul es el primer elemento, el segundo, el tercero,.... y el n-simo elmento.
Los arreglos se clasifican de acuerdo con el nmero de dimensiones que tienen. As se tienen los:
- Unidimensionales (vectores)
- Bidimensionales (tablas o matrices)
- Multidimensionales (tres o ms dimensiones)
La Declaracin de un Arreglo es igual a como se hara con una variable, a excepcin de que tambin se
especifica la cantidad de elementos en el arreglo encerrado entre corchetes de la siguiente manera:

Vectores
Tipo_de_dato nombre_del_Vector[tamao];

Ejemplo:
int a[20]; // declara un vector de 20 elementos enteros
flota x[50]; // declara un vector de 50 elementos reales
char w[30]; // declara un vector de 30 elementos tipo carcter
char nombres[50][80]; // declara un vector de 50 elementos donde cada elemento
// es una cadena de 80 caracteres
Inicializacin de un Vector:
Cuando se declara un arreglo, sus valores se pueden inicializar de la siguiente manera:
int lista[9]= {0, 4, 78, 5, 32, 9, 77, 1, 23}
Una Caracterstica importante de los arreglos en C es que no se pueden modificar los limites superior e
inferior (y por tanto el rango) durante el programa. El limite inferior se fija siempre en 0 y el superior lo
fija el programador, es decir:

Docente: Ing. Marcelino Torres Villanueva

int Lista[9]={0, 4, 78, 5, 32, 9, 77, 1, 23}


Posicin 0 1 2 3 4 5 6 7 8 = (9 posiciones)
Acceso a los arreglos:
Cada valor dentro de un arreglo se conoce como elemento del arreglo. Para acceder a un elemento de un
arreglo especifique el nombre del arreglo con el ndice del elemento entre corchetes [].
Ejemplo:
int nmeros = { 12, 20, 60, 80, 100 };
for(int ndice = 0; ndice < 5 ; ndice++)
cout<<nmeros[ndice]<<endl;
El ndice comienza en 0 y termina en 4 porque hay cinco elementos, y cada elemento del arreglo se llama
nmeros[ndice].

Ejercicios de Vectores
1)

Hacer un programa para ingresar n valores reales en un arreglo y los muestre en la pantalla,
adems reportar el mayor, el menor y el promedio.

#include<iostream>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
float mayor(float x[], int n);
float menor(float x[], int n);
float promedio(float x[], int n);
int main()
{
float x[MAX];
int n;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"El mayor : "<<mayor(x,n)<<endl;
cout<<"El menor : "<<menor(x,n)<<endl;
cout<<"El promedio es : "<<promedio(x,n)<<endl;
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}

Docente: Ing. Marcelino Torres Villanueva

void ingresoVector(float v[], int n,char mensaje[])


{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
float mayor(float x[], int n)
{
int i;
float may;
may=x[0];
for(i=0;i<n;i++)
if(x[i]>may)
may=x[i];
return may;
}
float menor(float x[], int n)
{
int i;
float men;
men=x[0];
for(i=0;i<n;i++)
if(x[i]<men)
men=x[i];
return men;
}
float promedio(float x[], int n)
{
int i;
float s=0;
for(i=0;i<n;i++)
s=s+x[i];
return s/n;
}

Docente: Ing. Marcelino Torres Villanueva

2)

Programa para ingresar n valores reales en un arreglo y calcular la desviacin standard.

#include<iostream>
#include<math.h>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
float promedio(float x[], int n);
float desviacionStandard(float x[], int n);
int main()
{
float x[MAX];
int n;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"La desviacion standard es : "<<desviacionStandard(x,n)<<endl;
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}

Docente: Ing. Marcelino Torres Villanueva

void reporteVector(float v[], int n, char mensaje[])


{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
float promedio(float x[], int n)
{
int i;
float s=0;
for(i=0;i<n;i++)
s=s+x[i];
return s/n;
}
float desviacionStandard(float x[], int n)
{
int i;
float p=promedio(x,n),suma=0,ds;

suma=0;
for(i=0;i<n;i++)
suma=suma + pow(x[i]-p,2);
ds=sqrt(suma/(n-1));
return ds;

3)

Programa para ingresar n valores reales en un arreglo y luego invierta el arreglo.

#include<iostream.h>
#define MAX 100
void main()
{
float x[MAX],temp;
clrscr();
int n,i,j;
do{
cout<<"Cantidad de elementos del arreglo : ";
cin>>n;
}while(n<=0 || n>MAX);
for(i=0; i<n;i++)
{
cout<<"x["<<i<<"]:";
cin>>x[i];
}
cout<<"Arreglo Ingresado"<<endl;
for(i=0; i<n;i++)
cout<<"x["<<i<<"]: "<<x[i]<<endl;
Docente: Ing. Marcelino Torres Villanueva

for(i=0,j=n-1;i<n/2;i++,j--)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
cout<<"Arreglo Invertido"<<endl;
for(i=0; i<n;i++)
cout<<"x["<<i<<"]: "<<x[i]<<endl;
}
4)

Programa para ingresar 2 vectores de n elementos reales cada uno y reportar el producto
escalar de ellos.

#include<iostream>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
float productoEscalar(float x[], float y[], int n);
int main()
{
float x[MAX],y[MAX];
int n;
numDatos(n,"Numero de elementos de los vectores : ");
cout<<"Primer Vector"<<endl;
ingresoVector(x,n,"Ingreso de datos del primer vector");
cout<<"Segundo Vector"<<endl;
ingresoVector(y,n,"Ingreso de datos del segundo vector");
cout<<"El producto escalar es : "<<productoEscalar(x,y,n)<<endl;
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
Docente: Ing. Marcelino Torres Villanueva

{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
float productoEscalar(float x[], float y[], int n)
{
int i;
float pe=0;
for(i=0;i<n;i++)
pe=pe+x[i]*y[i];
return pe;
}
5)

Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Adems


ingresar un numero y verificar si este se encuentra en el arreglo, si se encuentra reportar la
posicin donde se encontr y si no se encontr reportar numero no se encuentra.

#include<iostream>
#include<math.h>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
int busquedaSecuencial(float v[], int n,float dato);
int main()
{
float x[MAX],dato;
int n,p;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"dato a buscar : ";
cin>>dato;
p=busquedaSecuencial(x,n,dato);
if(p!=-1)
cout<<"El dato se encuentra en la posicion "<<p<<endl;
else
Docente: Ing. Marcelino Torres Villanueva

cout<<"El dato no se encuentra"<<endl;


system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
int busquedaSecuencial(float v[], int n, float dato)
{
int i;
for(i=0;i<n;i++)
if(v[i]==dato) return i;
return -1;
}
6)

Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Adems


ingresar un nmero y verificar si este se encuentra en el arreglo, si se encuentra cambiarlo por
otro dato si no se encuentra reportar dato no se encuentra.

#include<iostream>
#include<math.h>
using namespace std;
#define MAX 100

Docente: Ing. Marcelino Torres Villanueva

void numDatos(int &n,char mensaje[]);


void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
int busquedaSecuencial(float v[], int n,float dato);
int main()
{
float x[MAX],dato;
int n,p;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"dato a buscar : ";
cin>>dato;
p=busquedaSecuencial(x,n,dato);
if(p!=-1)
{
cout<<"Nuevo dato : ";
cin>>x[p];
reporteVector(x,n,"Nuevo Arreglo");
}
else
cout<<"El numero no se encuentra"<<endl;
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
Docente: Ing. Marcelino Torres Villanueva

cout<<v[i]<<endl;
}
int busquedaSecuencial(float v[], int n, float dato)
{
int i;
for(i=0;i<n;i++)
if(v[i]==dato) return i;
return -1;
}
7)

Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Adems


ingresar un nmero y verificar si este se encuentra en el arreglo, si se encuentra eliminarlo si no
se encuentra reportar dato no se encuentra.

#include<iostream>
#include<math.h>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
int busquedaSecuencial(float v[], int n,float dato);
void eliminar(float v[], int &n, int p);
int main()
{
float x[MAX],dato;
int n,p;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"dato a eliminar : ";
cin>>dato;
p=busquedaSecuencial(x,n,dato);
if(p!=-1)
{
eliminar(x,n,p);
reporteVector(x,n,"Nuevo Arreglo");
}
else
cout<<"El numero no se encuentra"<<endl;
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
Docente: Ing. Marcelino Torres Villanueva

10

do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);

void ingresoVector(float v[], int n,char mensaje[])


{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
int busquedaSecuencial(float v[], int n, float dato)
{
int i;
for(i=0;i<n;i++)
if(v[i]==dato) return i;
return -1;
}
void eliminar(float v[], int &n, int p)
{
int i;
for(i=p;i<n-1;i++)
v[i]=v[i+1];
n=n-1;
}

8)

Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Adems


ingresar un nmero y la posicin donde desea insertarlo e insertarlo en el arreglo, reportar el
arreglo modificado.

#include<iostream>
using namespace std;
#define MAX 100
Docente: Ing. Marcelino Torres Villanueva

11

void numDatos(int &n,char mensaje[]);


void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
void insertar(float v[], int &n, float dato, int p);
int main()
{
float x[MAX],dato;
int n,p;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
cout<<"dato a insertar: ";
cin>>dato;
do{
cout<<"Posicion donde desea insertar : ";
cin>>p;
}while(p<0|| p>n);
insertar(x,n,dato,p);
reporteVector(x,n,"Nuevo Arreglo");

system("pause");
return 0;

void numDatos(int &n,char mensaje[])


{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
Docente: Ing. Marcelino Torres Villanueva

12

cout<<v[i]<<endl;
}
int busquedaSecuencial(float v[], int n, float dato)
{
int i;
for(i=0;i<n;i++)
if(v[i]==dato) return i;
return -1;
}
void insertar(float v[], int &n, float dato, int p)
{
int i;
for(i=n-1;i>=p;i--)
v[i+1]=v[i];
v[p]=dato;
n=n+1;
}
9) Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Adems
reportarlo ordenado ascendentemente.
#include<iostream>
using namespace std;
#define MAX 100
void numDatos(int &n,char mensaje[]);
void ingresoVector(float v[], int n,char mensaje[]);
void reporteVector(float v[], int n, char mensaje[]);
void ordenar(float v[], int n);
int main()
{
float x[MAX];
int n;
numDatos(n,"Numero de elementos del arreglo : ");
ingresoVector(x,n,"Ingreso de datos del arreglo");
reporteVector(x,n,"Vector Ingresado");
ordenar(x,n);
reporteVector(x,n,"Vector Ordenado");
system("pause");
return 0;
}
void numDatos(int &n,char mensaje[])
{
do{
cout<<mensaje;
cin>>n;
}while(n<=0 || n>MAX);
Docente: Ing. Marcelino Torres Villanueva

13

}
void ingresoVector(float v[], int n,char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]:";
cin>>v[i];
}
}
void reporteVector(float v[], int n, char mensaje[])
{
int i;
cout<<mensaje<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<endl;
}
void ordenar(float v[], int n)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(v[i]>v[j])
{
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}

Docente: Ing. Marcelino Torres Villanueva

14

Potrebbero piacerti anche