Vous êtes sur la page 1sur 15

Programacin c++

orientado a objetos

Ing. Carolyn M. Rojas Vargas


Correo: carolynmilagrosrojas@gmail.com
VECTORES Y
CADENAS
QU ES UN VECTOR?
Un vector es una coleccin 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 declaracin hace que el compilador reserve la memoria
suficiente para albergar los 25 elementos, como cada entero requiere 4 bytes, esta declaracin reserva
100 bytes de memoria. La numeracin de los elementos del vector van desde 0 hasta el elemento
mas grande. Los nmeros sern de 0 al 24.
Sentencia asignando valor:
rayo [0]=29029;
rayo [1]=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 funcin a su tamao de cada elemento y su subndice.

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


tamao 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
ubicacin.
INICIALIZAR VECTORES
Puede inicializar un vector sencillo de tipos nativos , como enteros y caracteres, la primera vez que
declare el vector. Despus 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 funcin 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 dimensin equivaldra a una
cuadricula de datos compuesta por filas y columnas. Estaramos hablando de un vector de datos
bidimensionales, en el que una dimensin representa las filas y la otra las columnas. Un vector
tridimensional seria un cubo, en el que una dimensin representara el ancho, otra el alto y la
tercera la profundidad.

Cuando declare los vectores, cada dimensin estar representada como un subndice del vector. Un
vector bidimensional tiene dos subndice:

int grid[5 , 13];

vector tridimensional tiene tres subndice.

int cube[5 , 13, 8];

Los vectores multidimensionales puede creer rpidamente 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 subndice del vector y
manteniendo fijo los anteriores como en el cuentakilmetros 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 dimensin
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 funcin 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 aos 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 carcter null, un carcter 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 inicializacin no requiere carcter null, el
compilador lo aade automticamente.
VECTORES DE CARACTERES
Tambin 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 informacin que rebase el espacio designado para ella. Los buffers se puede utilizar
para guardar la informacin 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 mtodo del objeto cin
llamado getline() con dos argumentos:
- El buffer a rellenar
- El numero mximo de caracteres a obtener.

Ejemplo: la siguiente sentencia guarda un mximo de 18 caracteres introducidos por el usuario


(incluido el null) y los almacena en el vector de caracteres yum:
cin.getline(yum, 18);
Tambin se puede llamar al mtodo con un tercer argumento, el delimitador que finaliza la
introduccin: 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>

Ente muchas funciones que proporcionan, hay dos para copiar una cadena en otra: strcpy(), y
strncpy(). La funcin 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 mximo 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

Vous aimerez peut-être aussi