Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre común. Para referirse a un determinado elemento de un array se deberá utilizar un índice, que especifique su posición relativa en el array. El índice de un arreglo comienza en 0.
Un arreglo es una colección finita, homogénea y ordenada de elementos.

Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo.
Homogénea: Todos los elementos del arreglo deben ser del mismo tipo. Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el tercero,…. y el n-ésimo elmento.

Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así se tienen los:

- Unidimensionales (vectores)
- Bidimensionales (tablas o matrices)
- Multidimensionales (tres o más dimensiones)

La Declaración de un Arreglo es igual a como se haría con una variable, a excepción de que también se especifica la cantidad de elementos en el arreglo encerrado entre corchetes de la siguiente manera:

Tipo_de_dato nombre_del_arreglo[tamaño];

Arreglo

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 carácter

 char nombres[50][80]; // declara un vector de 50 elementos donde cada elemento
			  // es una cadena de 80 caracteres

Inicialización 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 Característica 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:

int Lista[9]={0, 4, 78, 5, 32, 9, 77, 1, 23};
Posición -> 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 números = { 12, 20, 60, 80, 100 };

	for(int  índice = 0; índice < 5 ; índice++)
	 	cout<<números[índice]<<endl;

El índice comienza en 0 y termina en 4 porque hay cinco elementos, y cada elemento del arreglo se llama números[índice].

Ejercicios de Vectores

1) Hacer un programa para ingresar n valores reales en un arreglo y los muestre en la pantalla, además 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);
}
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;
}

2) Programa para ingresar n valores reales en un arreglo y calcular la desviación 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];
   }
}

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;

  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++)
   {
     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. Además ingresar un numero y verificar si este se encuentra en el arreglo, si se encuentra reportar la posición 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
     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. Además ingresar un número 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

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++)
    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. Además ingresar un numero 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[])
{
   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. Además ingresar un número y la posición donde desea insertarlo e insertarlo en el arreglo, reportar el arreglo modificado.

#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 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++)
    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;
}
1

9)	Programa para ingresar n elementos en un arreglo y luego reportarlo en la pantalla. Además reportarlo ordenado ascendentemente.
1
#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);
}

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;
	   }
}

Ejercicios Propuestos

1) Programa para ingresar n valores reales en un vector y luego invierta el vector.
2) Programa para ingresar 2 vectores de n elementos reales cada uno y reportar el producto escalar de ellos..
3) Ingresar n números en un vector y mostrar luego, primero la lista de los números pares que fueron ingresados y luego la lista de los números negativos
4) Ingresar n enteros en un vector A y otros n enteros en un vector B y mostrar la lista de enteros del vector C. Donde cada C[i]=A[i]+B[i]
5) Sea un vector de tipo float de n elementos. Mostrar la lista de numeros menores al promedio.
6) Lea dos vectores A y B y luego diga que elementos del vector A no se encuentran en B.
7) Ingresar N notas en un vector y determinar el porcentaje de aprobados y el porcentaje de desaprobados
8) Ingresar n elementos en un vector y luego ingresar un elemento y reportar cuantas veces aparece ese elemento en el vector.
9) Ingresar dos vectores y reportar si son iguales
10) Calcule la mediana de un conjunto de datos. La mediana de un vector ordenado es el elemento central si el número de términos es impar. Y la semisuma de los términos centrales si el número de términos es par.
11) Calcule el promedio ponderado de un conjunto de datos. Se deben ingresar las cantidades con sus respectivos pesos.
12) Ingrese los nombres y las notas de n alumnos y reportar una lista en orden alfabético y otra lista en orden de merito.
13) Ingrese los nombres y las tallas de los jugadores de un equipo de fútbol y determine la talla promedio y el nombre del jugador más alto.
14) Ingresar 2 vectores de n y m elementos y calcular la unión, intersección y la diferencia del primero con el segundo.
15) Se tienen dos vectores ordenados y se desea unirlos en un tercero pero manteniendo los datos ordenados.
16) Calcule la media armónica de un conjunto de datos. La media armónica se define como: el Inverso del promedio de los inversos.
17) Programa para ingresar n elementos en un vector y al final quede sin elementos repetidos
18) Programa para ingresar n elementos en un vector y luego ingresar un elemento, si este se encuentra en el vector eliminarlo todas las veces que se encuentra.

Categorias: JAVA

One Response so far.

Leave a Reply


Oracle 11g R2 Sesion

CONEXION USANDO CON ORACLE SQL DEVELOPER Abrimos el sql Developer […]

Conectar C# con SQL

Conectar C# con SQL Server desde una cadena de conexion. […]

Insertar datos en un

Creamos una base de datos en MySQL. Creamos una tabla […]

Creación de Bases d

Creamos una base de datos llamada “prueba” en MySQL. Creamos […]

Conectar PHP con MyS

Conectar PHP con MySQL usando la función mysqli de PHP. […]

No public Twitter messages.

Sponsors

  • Cheap reliable web hosting from WebHostingHub.com.
  • Domain name search and availability check by PCNames.com.
  • Website and logo design contests at DesignContest.com.
  • Reviews of the best cheap web hosting providers at WebHostingRating.com.