Subido por Samuel López

Creación(Vectores)

Anuncio
1. Introducción a los Vectores
Definición
Un vector es una estructura de datos que puede almacenar una colección de elementos. Aquí,
implementaremos vectores utilizando arreglos estáticos. Esto significa que debemos conocer
de antemano el tamaño máximo que necesitaremos.
Los vectores permiten realizar operaciones como:
•
Agregar y eliminar elementos.
•
Acceder a elementos por índice.
•
Redimensionar el vector si es necesario (en implementaciones dinámicas).
Tipos de Vectores
•
•
Vectores estáticos: El tamaño del vector se define en tiempo de compilación y no
puede cambiarse.
Vectores dinámicos: El tamaño del vector puede cambiarse durante la ejecución del
programa.
2. Vectores Estáticos en C++
Características
•
Tamaño fijo: El tamaño del vector debe ser conocido y declarado en tiempo de
compilación.
•
•
Eficiencia: No hay sobrecarga por redimensionamiento dinámico, lo que puede hacer
que los vectores estáticos sean más rápidos en algunas situaciones.
Limitaciones: No se pueden redimensionar. Si se necesita un tamaño diferente, es
necesario declarar un nuevo arreglo.
Declaración e Inicialización
En C++, los vectores estáticos se declaran utilizando arreglos. El tamaño del arreglo debe ser
una constante o una expresión constante en tiempo de compilación.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100; // Tamaño fijo del vector
int vector[MAX_SIZE]; // Declaración del vector
int size = 0; // Tamaño actual del vector
// Inicializar los primeros elementos del vector
vector[0] = 1;
vector[1] = 2;
vector[2] = 3;
size = 3; // Actualizar el tamaño
// Imprimir los elementos del vector
for (int i = 0; i < size; ++i) {
cout << vector[i] << " ";
}
cout << endl;
return 0;
}
3. Operaciones Básicas con Vectores Estáticos
Agregar Elementos
Para agregar un elemento a un vector estático, es necesario asegurarse de que no se exceda
la capacidad del arreglo
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE];
int size = 0;
// Agregar elementos al vector
if (size < MAX_SIZE) {
vector[size++] = 10; // Agregar elemento 10
} else {
cout << "Error: Vector lleno." << endl;
}
return 0;
}
Acceso a Elementos
Para acceder a los elementos de un vector, se puede usar el índice del arreglo.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 3};
int size = 3;
// Acceder a elementos del vector
for (int i = 0; i < size; ++i) {
cout << "Elemento en posición " << i << ": " << vector[i] << endl;
}
return 0;
}
Ejemplo: Rellenar un Vector mediante Entrada del Teclado
Este programa permitirá al usuario ingresar elementos en un vector hasta alcanzar un
tamaño máximo predefinido.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100; // Tamaño máximo del vector
int vector[MAX_SIZE];
int size = 0;
// Declaración del vector
// Tamaño actual del vector
cout << "Introduce el número de elementos que deseas agregar (máximo " << MAX_SIZE <<
"): ";
int numElements;
cin >> numElements;
if (numElements > MAX_SIZE) {
cerr << "Error: El número de elementos excede el tamaño máximo permitido." << endl;
return 1;
}
cout << "Introduce los " << numElements << " elementos del vector:" << endl;
for (int i = 0; i < numElements; ++i) {
cout << "Elemento " << i + 1 << ": ";
cin >> vector[i];
++size;
}
cout << "Los elementos del vector son: ";
for (int i = 0; i < size; ++i) {
cout << vector[i] << " ";
}
cout << endl;
return 0;
}
4. Ejercicios de Práctica
Ejercicio 1: Suma de Elementos
Escribe un programa que calcule la suma de todos los elementos de un vector.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 3, 4, 5};
int size = 5;
int sum = 0;
for (int i = 0; i < size; ++i) {
sum += vector[i];
}
cout << "Suma de elementos: " << sum << endl;
return 0;
}
Ejercicio 2: Producto Escalar
Escribe un programa que calcule el producto escalar de dos vectores del mismo tamaño.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector1[MAX_SIZE] = {1, 2, 3};
int vector2[MAX_SIZE] = {4, 5, 6};
int size = 3;
int product = 0;
for (int i = 0; i < size; ++i) {
product += vector1[i] * vector2[i];
}
cout << "Producto escalar: " << product << endl;
return 0;
}
Ejercicio 3: Vector de Números Primos
Escribe un programa que genere un vector de los primeros n números primos.
#include <iostream>
#include <cmath>
using namespace std;
bool esPrimo(int n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) return false;
}
return true;
}
int main() {
const int MAX_SIZE = 100;
int primos[MAX_SIZE];
int size = 0;
int n = 10; // Número de primos que queremos encontrar
int numero = 2;
while (size < n) {
if (esPrimo(numero)) {
primos[size++] = numero;
}
numero++;
}
cout << "Primeros " << n << " números primos: ";
for (int i = 0; i < size; ++i) {
cout << primos[i] << " ";
}
cout << endl;
return 0;
}
Ejercicio 4: Media de los Elementos
Escribe un programa que calcule la media de los elementos en un vector.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 3, 4, 5};
int size = 5;
double media = 0;
for (int i = 0; i < size; ++i) {
media += vector[i];
}
media /= size;
cout << "Media de los elementos: " << media << endl;
return 0;
}
Ejercicio 5: Buscar un Elemento
Escribe un programa que busque un elemento específico en un vector y muestre su posición
si se encuentra.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 3, 4, 5};
int size = 5;
int elementoBuscado = 3;
int posicion = -1;
for (int i = 0; i < size; ++i) {
if (vector[i] == elementoBuscado) {
posicion = i;
break;
}
}
if (posicion != -1) {
cout << "El elemento " << elementoBuscado << " se encuentra en la posición " <<
posicion << endl;
} else {
cout << "El elemento " << elementoBuscado << " no se encuentra en el vector." <<
endl;
}
return 0;
}
Ejercicio 6: Ordenar Vector
Escribe un programa que ordene los elementos de un vector en orden ascendente o
descendente.
#include <iostream>
using namespace std;
void bubbleSort(int vector[], int size) {
for (int i = 0; i < size - 1; ++i) {
for (int j = 0; j < size - i - 1; ++j) {
if (vector[j] > vector[j + 1]) {
int temp = vector[j];
vector[j] = vector[j + 1];
vector[j + 1] = temp;
}
}
}
}
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {5, 2, 8, 3, 1};
int size = 5;
bubbleSort(vector, size);
cout << "Vector ordenado: ";
for (int i = 0; i < size; ++i) {
cout << vector[i] << " ";
}
cout << endl;
return 0;
}
Ejercicio 7: Eliminar Elemento Duplicado
Escribe un programa que elimine los elementos duplicados de un vector.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 2, 3, 4, 4, 5};
int size = 7;
int newSize = 0;
for (int i = 0; i < size; ++i) {
bool duplicado = false;
for (int j = 0; j < newSize; ++j) {
if (vector[i] == vector[j]) {
duplicado = true;
break;
}
}
if (!duplicado) {
vector[newSize++] = vector[i];
}
}
cout << "Vector sin elementos duplicados: ";
for (int i = 0; i < newSize; ++i) {
cout << vector[i] << " ";
}
cout << endl;
return 0;
}
Ejercicio 8: Invertir Vector
Escribe un programa que invierta los elementos de un vector.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {1, 2, 3, 4, 5};
int size = 5;
for (int i = 0; i < size / 2; ++i) {
int temp = vector[i];
vector[i] = vector[size - i - 1];
vector[size - i - 1] = temp;
}
cout << "Vector invertido: ";
for (int i = 0; i < size; ++i) {
cout << vector[i] << " ";
}
cout << endl;
return 0;
}
Ejercicio 9: Unión de Vectores
Escribe un programa que tome dos vectores como entrada y devuelva un tercer vector que
sea la unión de ambos.
#include <iostream>
using namespace std;
int main() {
const int MAX_SIZE = 100;
int vector1[MAX_SIZE] = {1, 2, 3};
int vector2[MAX_SIZE] = {3, 4, 5};
int size1 = 3;
int size2 = 3;
int unionVector[MAX_SIZE];
int sizeUnion = 0;
for (int i = 0; i < size1; ++i) {
unionVector[sizeUnion++] = vector1[i];
}
for (int i = 0; i < size2; ++i) {
bool duplicado = false;
for (int j = 0; j < sizeUnion; ++j) {
if (vector2[i] == unionVector[j]) {
duplicado = true;
break;
}
}
if (!duplicado) {
unionVector[sizeUnion++] = vector2[i];
}
}
cout << "Unión de vectores: ";
for (int i = 0; i < sizeUnion; ++i) {
cout << unionVector[i] << " ";
}
cout << endl;
return 0;
}
Ejercicio 10: Subsecuencia de Suma Máxima
Escribe un programa que encuentre la subsecuencia de suma máxima en un vector.
#include <iostream>
using namespace std;
int maxSubsequenceSum(int vector[], int size) {
int maxSum = vector[0];
int currentSum = vector[0];
for (int i = 1; i < size; ++i) {
if (currentSum < 0) {
currentSum = vector[i];
} else {
currentSum += vector[i];
}
if (currentSum > maxSum) {
maxSum = currentSum;
}
}
return maxSum;
}
int main() {
const int MAX_SIZE = 100;
int vector[MAX_SIZE] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
int size = 9;
int maxSum = maxSubsequenceSum(vector, size);
cout << "Suma máxima de la subsecuencia: " << maxSum << endl;
return 0;
}
Ejercicios de practica
1. Rotación de Vector: Rota los elementos de un vector hacia la izquierda o hacia la derecha
en k posiciones.
2. Vector de Frecuencia: Crea un vector que almacene la frecuencia de cada elemento en otro
vector.
3. Vector Palíndromo: Comprueba si un vector es un palíndromo o no.
4. Intersección de Vectores: Encuentra la intersección de dos vectores.
5. Mínimos y Máximos: Encuentra el valor mínimo y máximo en un vector.
6. Subsecuencia Ordenada más Larga: Encuentra la longitud de la subsecuencia ordenada
más larga en un vector.
7. Conteo de Elementos Únicos: Cuenta el número de elementos únicos en un vector.
8. Operaciones Matemáticas: Realiza operaciones matemáticas (suma, resta, multiplicación,
etc.) en vectores.
9. Combinaciones de Suma: Encuentra todas las combinaciones únicas de elementos en un
vector que sumen un valor específico.
Descargar