Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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);
}
2)
#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];
}
}
suma=0;
for(i=0;i<n;i++)
suma=suma + pow(x[i]-p,2);
ds=sqrt(suma/(n-1));
return ds;
3)
#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)
#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
#include<iostream>
#include<math.h>
using namespace std;
#define MAX 100
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)
#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);
8)
#include<iostream>
using namespace std;
#define MAX 100
Docente: Ing. Marcelino Torres Villanueva
11
system("pause");
return 0;
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;
}
}
14