EVAP 5

 VECTORES 
                      
Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno despues de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.
Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.
Crear un vector en C++ es sencillo, seguimos la siguiente sintaxix: Tipo nombre[tamanyo];
Ejm:
1
2
3
int a[5]; // Vector de 5 enteros
float b[5]; // vector de 5 flotantes
Producto product[5]; // vector de 5 objetos de tipo Producto
Podríamos también inicializar el vector en la declaración:
1
2
3
int a[] = {5, 15, 20, 25, 30};
float b[] = {10.5, 20.5, 30.5, 12.5, 50.5}
Producto product[] = {celular, calculadora, camara, ipod, usb}
Como hay 5 elementos en cada array, automáticamente se le asignará 5 espacios de memoria a cada vector, pero si trato de crear el vector de la forma int a[] , el compilador mostrará un error, porque no indiqué el tamaño del vector ni tampoco inicializé sus elementos.
Asigno valores a los elementos de un vector indicando su posición:
1
2
int a[4] = 30; // le asigno el valor 30 a la posición 4 del vector.
product[2].setPrecio(300) // le asigno un precio de 300 al producto en la posición 2.
Obviamente el método setPrecio() debe de estar implementado. Para llenar, recorrer e imprimir un vector podemos utilizar un bucle for:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
  int dim;
  cout << "Ingresa la dimension del vector" << endl;
  cin >> dim; // Supongamos que ingrese 10
  int vector[dim]; // mi vector es de tamanyo 10
  for(int i = 0; i < dim; i++){
    vector[i] = i * 10;
    cout << vector[i] << endl;
  }
  return 0;
}
La salida del programa mostrará: 0 10 20 30 40 50 60 70 80 90 Fàcil verdad? Bien ahora creen 2 o más vectores y empiecen a hacer funciones básicas como sumar, restar, buscar, ordenar, moda, etc que ayudan mucho a ir desarrollando la lógica. No vale copiar y pegar, mejor es practicar, practicar y practicar.
Aquí una función simple para sumar 2 vectores a y b y poner el resultado en un tercer vector c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
void sumar(int a[], int b[], int c[],int dim) {
    for (int i = 0; i < dim; i++) {
        c[i] = a[i] + b[i];
    }
}
void imprimir(int v[], int dim)
{
   for(int i = 0; i < dim; i++) {
        cout << v[i] << endl;
   }
   cout << endl << endl;
}
int main()
{
    int dim;
    cout << "Ingresa la dimensión" << endl;
    cin >> dim;
    int a[dim];
    int b[dim];
    int c[dim];
    for(int i = 0; i < dim; i++) {
        a[i] = i * 10;
        b[i] = i * 5;
    }
    cout << "Vector A " << endl;
    imprimir(a, dim);
    cout << "Vector B " << endl;
    imprimir(b, dim);
    sumar(a, b, c, dim);
    cout << "Vector C " << endl;
    imprimir(c, dim);
    return 0;
}
Si ingreso una dimensión de 10, este programa me daría:
Vector A
0 10 20 30 40 50 60 70 80 90
VECTOR B
0 5 10 15 20 25 30 35 40 45
VECTOR C
0 15 30 45 60 75 90 105 120 135
Entonces para tomar en cuenta:
  • Todo vector debe tener definido un tipo de dato.
  • Todo vector necesita de una dimensión o tamanyo.
El código de arriba se puede mejorar muchísimo con objetos y clases, este es solo un pequeño ejemplo.


 VECTORES 


Introducción 
 En C a los vectores también se les llama arrays o 
arreglos 
 Las matrices serán vectores de vectores  Ver 
más adelante 
 Los arrays son 
– Conjuntos de variables del mismo tipo… 
– … que tienen el mismo nombre… 
– … y se diferencian en el índice 
 Es un modo de manejar una gran cantidad de 
datos del mismo tipo bajo un mismo nombre o 
identificador 
 Para realizar operaciones matemáticas sobre un 
array (como en Matlab) debemos operar sobre 
cada elemento del array 2 


Declaración de un array
 tipo: Tipo que tienen el conjunto de variables 
 int, float, double, … 
 nombre: Identificador con el nombre del array 
 tamaño: Cantidad de espacios de memoria 
que queremos reservar para este array 
– Importante: Debe ser un entero constante!!! 
Conocido en tiempo de compilación 


Inicialización de un array
tipo nombre[tamaño] = {a, b, c,…};

 El número de valores entre llaves tiene que ser 
menor o igual al tamaño 
– Si es menor el resto de los valores se quedan sin 
inicializar 
 Existe una forma alternativa: 
 tipo nombre[tamaño] = {a, b, c,…};
– Si no se especifica el tamaño se reservarán tantos 
espacios como elementos haya entre llaves

Acceso a los elementos de un array
 Para un array de tamaño N y nombre V
accederemos al elemento i como V[i] 
 Ese valor puede ser leído (imprimido, asignado 
a otra variable,…) o modificado (dándole un 
valor) como cualquier otra variable 

 V[i] = valor;
 Importante: Los índices en los arrays de C 
van desde 0 hasta (N-1)


Ejemplo 
/* Usando un array de enteros */ 
int main() { 
 /* Declarando el valor del array */ 
 int losnumeros[10]; 
 int i = 0; 
 /* Modificando el valor del array */ 
 for (i = 0; i < 10; i++) 
 losnumeros[i] = i; 
 /* Imprimiendo el valor del array */ 
 for (i = 0; i < 10; i++) 
 printf("El elemento %d vale %d\n", i, losnumeros[i]); 
 return 0; 
El elemento 0 vale 0 
El elemento 1 vale 1 
El elemento 2 vale 2 

Ejemplo… con truco 

#define MYSIZE 10 
int main() { 
 /* Declarando el valor del array */ 
 int losnumeros[MYSIZE]; 
 int i = 0; 
 /* Modificando el valor del array */ 
 for (i = 0; i < MYSIZE; i++) 
 losnumeros[i] = i; 
 /* Imprimiendo el valor del array */ 
 for (i = 0; i < MYSIZE; i++) 
 printf("El elemento %d vale %d\n", i, losnumeros[i]); 
 return 0; 
El elemento 0 vale 0 
El elemento 1 vale 1 
El elemento 2 vale 2 


Arrays como argumentos de funciones
 Para pasar un array a una función no hace falta 
especificar su tamaño: 
retorno nombrefuncion(tipo array[],…);
 Los arrays en C están íntimamente relacionados 
con los punteros  Lo veremos más adelante 
– La sintaxis general para usar arrays como argumentos 
de funciones será 

retorno nombrefuncion(tipo array[],…);
– Importante: En este formato, si se modifican valores del 
array dentro de la función, estas se propagan fuera  
Paso de argumentos por referencia 

Ejemplo función 
#define MYSIZE 10 
void imprime_array_enteros(int V[], int size); 
int main() { 
 /* Declarando el valor del array */ 
 int losnumeros[MYSIZE]; 
 int i = 0; 
 /* Modificando el valor del array */ 
 for (i = 0; i < MYSIZE; i++) 
 losnumeros[i] = i; 
 imprime_array_enteros(losnumeros, MYSIZE); 
 return 0; 
/* Imprime el valor del array V de tamaño size*/ 
void imprime_array_enteros(int V[], int size) { 
int i = 0; 
for (i = 0; i < size; i++) 
 printf("El elemento %d vale %d\n", i, V[i]); 
}

Arrays multidimensionales 
 Declaración 
 Utilización: 
– 0 < i1 < N1 
– 0 < i2 < N2 
– … 
 Funciones 
10 
tipo nombre[N1][N2][…]; 
Nombre[i1][i2] 
retorno nombrefuncion(tipo array[][N2],…); 


0 comentarios:

Publicar un comentario