Está en la página 1de 15

Programación c++

orientado a objetos

Ing. Carolyn M. Rojas Vargas


Correo: carolynmilagrosrojas@gmail.com
VECTORES Y
CADENAS
¿QUÉ ES UN VECTOR?
Un vector es una colección de datos relacionados que tienen todos los mismos tipo de dato. Un
vector se puede concebir como una serie de lugares en los que se almacena datos. Cada lugar recibe
el nombre de elemento del vector.
Los vectores se declaran escribiendo el tipo de dato y el nombre del vector, seguido del numero de
elementos que contiene el vector entre corchetes, Veamos un ejemplo:

Long rayo[ 25 ];

El vector rayo contiene 25 enteros. Esta declaración hace que el compilador reserve la memoria
suficiente para albergar los 25 elementos, como cada entero requiere 4 bytes, esta declaración reserva
100 bytes de memoria. La numeración de los elementos del vector van desde 0 hasta el elemento
mas grande. Los números serán de 0 al 24.
Sentencia asignando valor:
rayo [0]=29029;
rayo [0]=7804;
#include <iostream>
EJEMPLO: int main()
{
float goal[4];
goal[0] = 0.9;
goal[1] = 0.75;
goal[2] = 0.5;
goal[3] = 0.25;
float weight, target;

std::cout << "Enter current weight: ";


std::cin >> weight;
std::cout << "\nEnter goal weight: ";
std::cin >> target;
std::cout << "\n";

for (int i = 0; i < 4; i++)


{
float loss = (weight - target) * goal[i];
std::cout << "Goal " << i << ": ";
std::cout << weight - loss << "\n";
}

return 0;
}
REBASAR UN LIMITE DEL VECTOR
Cuando le asigne un valor a un elemento de un vector, el compilador calculara donde debe
almacenar el valor en memoria en función a su tamaño de cada elemento y su subíndice.

Si guarda un valor nuevo en goal [3], el compilador multiplicara un desplazamiento de 3 por el


tamaño de cada elemento , que en el caso de los enteros long es de 4 bytes. El compilador se
desplazara desde esos 12 bytes desde el principio del vector y guardara el nuevo valor en dicha
ubicación.
INICIALIZAR VECTORES
Puede inicializar un vector sencillo de tipos nativos , como enteros y caracteres, la primera vez que
declare el vector. Después del nombre del vector , incluya un signo igual y una lista de valores
separados por comas rodeada por llaves:

int post[10] = {0,10,20,30,40,50,60,70,80,90};


Esto declara que post es un vector de 10 enteros.. Le asigna a post [0] el valor 0, a post [1] el valor
de diez, y asi sucesivamente hasta llegar a post [9], que esa igual a 90.

Para contar el numero de elementos de un vector se puede utilizar la función nativa de C++:
const int size = sizeof (post) / sizeof (post[0]);

Cuando se inicializa un vector de cinco elementos con seis valores, el compilador me mandara
mensaje de error.
int post[10] = {10,20,30,40,50,60};
Se puede inicializar un vector con menos valores.
VECTORES MULTIDIMENSIONALES
Un vector puede verse como una sola fila de datos. Un segunda dimensión equivaldría a una
cuadricula de datos compuesta por filas y columnas. Estaríamos hablando de un vector de datos
bidimensionales, en el que una dimensión representa las filas y la otra las columnas. Un vector
tridimensional seria un cubo, en el que una dimensión representaría el ancho, otra el alto y la
tercera la profundidad.

Cuando declare los vectores, cada dimensión estará representada como un subíndice del vector. Un
vector bidimensional tiene dos subíndice:

int grid[5 , 13];

vector tridimensional tiene tres subíndice.

int cube[5 , 13, 8];

Los vectores multidimensionales puede creer rápidamente y exceder la memoria disponible, no se


olvide de esto al crear grandes vectores con varias dimensiones.
INICIALIZAR VECTORES MULTIDIMENSIONALES
Puede inicializar vectores multidimensionales con valores como vectores unidimensionales. A los
elementos del vector se le asignan valores en orden, cambiando el ultimo subíndice del vector y
manteniendo fijo los anteriores como en el cuentakilómetros de un coche. Ejemplo:

int box[5][3] = {8, 6, 7, 5, 3, 0, 9, 2, 1, 7, 8, 9, 0, 5, 2}; // el primer valor se le asigna a box[0][0], el


segundo a box[0][1]y el tercero a box[0][2]. El siguiente valor se le asigna a box[1][0],
continuando por box[1][1] , box[1][2], , box[2][0] , box[2][1] , box[2][2] , box[3][0] , box[3][1] ,
box[3][2] , box[4][0] , box[4][1] y box[4][2].
La variable box contiene un vector bidimensional que tiene cinco enteros en la primera dimensión
y dos enteros en la segunda. Esto crea una cuadricula de elementos de 5 por 3.
int box[5][3] ={
{8, 6, 7},
{5, 3, 0},
{9, 2, 1,},
{7, 8, 9},
{0, 5, 2}};
El compilador ignora las llaves internas.
EJEMPLO: #include <iostream>
using namespace std;

int main()
{
int box[5][3] = { 8, 6, 7, 5, 3, 0, 9, 2, 1, 7, 8,
9, 0, 5, 2 };
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
cout << "box[" << i << "]";
cout << "[" << j << "] = ";
cout << box[i][j] << "\n";
}
}
}
VECTORES DE CARACTERES
Al declarar un vector, le indica al compilador cuantos elementos espera guardar en él exactamente.
El compilador reserva en la memoria el espacio suficiente para el vector en función del tipo de dato
y el numero de elementos que contiene. Los vectores son apropiados para datos consistentes en un
numero conocido de elementos, como los escaques de un tablero de ajedrez(64) o los años de un
siglo (100).

Su familiaridad con los vectores hace posible trabajar con textos mas largos que los caracteres
sencillos que representa el tipo de datos char. Una cadena es una serie de caracteres. Ejemplo:
cout << “solium petit in profundis!\n”

Una cadena es un vector de caracteres que termina en un carácter null, un carácter especial
codificado como `\0´. Puede declarar e inicializar una cadena como cualquier otro vector:

char yum [] = {‘ z, ‘ o’, ‘ m’, ‘ b ’, ‘ i’, ‘ e’,’ ’, ‘ E’, ‘a’, ‘ t’, ‘ ’, ‘ B’, ‘ r’, ‘ a’, ‘i’, ‘ n’, ‘ s’, ‘\0’}; // cadena
de 18 bytes.

char yum [] = “zombies eat brains”; esta forma de inicialización no requiere carácter null, el
compilador lo añade automáticamente.
VECTORES DE CARACTERES
También se puede crear vectores de caracteres sin inicializar, que se denomina buffers. Como
ocurre con los vectores, es muy importante que se asegure de que no incluye en el buffer una
cantidad de información que rebase el espacio designado para ella. Los buffers se puede utilizar
para guardar la información que teclea el usuario como “ cin “. Ejemplo:

char yum []= “zombies eat brains”;


cin << yum;
Si el usuario introduce espacio y cadenas de texto grande debe llamar a un método del objeto cin
llamado getline() con dos argumentos:
- El buffer a rellenar
- El numero máximo de caracteres a obtener.

Ejemplo: la siguiente sentencia guarda un máximo de 18 caracteres introducidos por el usuario


(incluido el null) y los almacena en el vector de caracteres yum:
cin.getline(yum, 18);
También se puede llamar al método con un tercer argumento, el delimitador que finaliza la
introducción: cin.getline(yum, 18, ´ `); // cuando se omite representa el ·\n·
EJEMPLO: #include <iostream>
using namespace std;
int main()
//Programa hace tres {
peguntas y las guarda en el char name[50]; //se considera como numero maximo de caracteres: 49 para q quepa el
buffer. null al final
char quest[80];
char velocity[80];
cout << "\nWhat is your name? ";
cin.getline(name, 49);// no hace falta el tercer argumento porque basta con el valor por
//defecto de newline
cout << "\nWhat is your quest? ";
cin.getline(quest, 79);
cout << "\nWhat is the velocity of an unladen swallow? ";
cin.getline(velocity, 79);
cout << "\nName: " << name << "\n";
cout << "Quest: " << quest << "\n";
cout << "Velocity: " << velocity << "\n";
return 0;}
COPIAR CADENAS

C++ hereda de C una biblioteca de funciones para trabajar con cadenas. Esta biblioteca se puede
incorpora a un programa incluyendo el archivo de cabecera string.h. Ejemplo:
#include <string.h>

Entre muchas funciones que proporcionan, hay dos para copiar una cadena en otra: strcpy(), y
strncpy(). La función strcpy() copia el contenido entero de una cadena en el buffer .

Si el vector original es mayor que el destino, strcpy() escribirá mas allá del buffer. Para evitar esto se
debe colocar:
strncopy(string1, string2, 80);//el tercer argumento especifica l numero máximo a copiar.
EJEMPLO:
#include <iostream>
#include <string.h>
Using n

int main()
{
char string1[] = "Free the bound periodicals!";
char string2[80];

strcpy(string2, string1);

std::cout << "String1: " << string1 << std::endl;


std::cout << "String2: " << string2 << std::endl;
return 0;
}
GRACIAS

También podría gustarte