Você está na página 1de 29

UTILITARIOS EN C++

LENGUAJE DE PROGRAMACIN ESTRUCTURADA (ST -202 V)


JOS CABALLERO ORTIZ
AGENDA
Cadenas en C++
Declaracin y uso de Cadenas
Vectores de Cadenas y Uso en Funciones
La Clase Vector
Funciones Matemticas
Cadenas en C++
LENGUAJE DE PROGRAMACIN ESTRUCTURADO
CADENAS EN C++
Hemos ido trabajando las cadenas
en C, con vectores de tipo char.
En C++ las cadenas de caracteres
pueden manejarse utilizando la J C 0 1
clase string. [0] [1] [2] [4]
Revisaremos algunas funciones que
pueden facilitar el trabajo.
Tener en cuenta que debe haberse
includo la librera <string>
DECLARACIN Y USO
La declaracin se da de manera similar a los tipos de datos bsicos
string s1 = "Buenos dias"; Declaracin y asignacin de cadena
string s2 = "Juan Perez";
s2 = Pedro Juarez"; Es posible esta asignacin posterior
a la declaracin

string s3 = s1+ " " + s2; El operador + puede ser muy til
en estos casos
cout <<s3<<endl;
USO EN FUNCIONES
De manera similar a otros tipos de dato

void saludar (string nombre, string apellido, string pais){


string saludo = "Buenos dias ";
cout<<saludo+nombre+" "+apellido<<endl;
string saludo1 = "Bienvenido a ";
cout<<saludo1+pais<<endl;
}

saludar ("Juan","Perez","Alemania"); La llamada a la funcin es directa


USO EN FUNCIONES
Similar a funciones que manejan
otros tipos de dato
string evaluarStock(int cantStock){
string respuesta;
if(cantStock<STOCK_MINIMO){
respuesta = "No hay stock suficiente";
}else{
respuesta = "Hay stock suficiente";
}
return respuesta+"\n"; Valor de retorno
}
USO CON VECTORES

void pruebaVectorString(){
string listaAlumnos[CANTIDAD_ALUMNOS]; Declaracin de Vector
listaAlumnos[0] = "Juan Perez";
Asignacin de Valores
listaAlumnos[1] = "Pedro Juarez";
imprimirListaAlumnos(listaAlumnos);
}
Llamado a funcin
USO CON VECTORES
void imprimirListaAlumnos(string listado[]){
cout.fill('*');
cout.width(20);
cout<<"Listado Alumnos"<<endl<<endl;
for(int i=0;i<CANTIDAD_ALUMNOS;i++){
if(!listado[i].empty()){
cout<<i+1<<". "<<listado[i]<<endl;
}
}
Manejo de ndices similar
}
OPERADORES
Operacin Descripcin

Operador += Permite adicionar el contenido de una cadena a otra

Operador + Permite concatenar cadenas

Operadores ==, != Permiten comparar cadenas directamente

Operadores <,>,<=,>= Permite comparar y ordenar cadenas por sus caracteres


FUNCIONES ASOCIADAS
Operacin Descripcin

append() Permite adicionar el contenido de una cadena a otra

erase() Elimina un extracto de la cadena. Recibe la posicin inicial y la cantidad de


caracteres.
find() Permite encontrar la ocurrencia de una cadena dentro de otra. Devuelve la
posicin inicial.
substr() Obtiene una subcadena dada la posicin inicial y la cantidad de caracteres.

empty() Verifica si la cadena est vaca

length() Obtiene la longitud de la cadena


USO DE OPERADORES
string s1= "Hola mundo";
string s2,s3,s4,s5;
s5 = " de nuevo";
s2 = string(s1); // Hola mundo
s2 = string(s1,2); //la mundo
s2 = string(s1,3,3); //a m
s2 = string(6,'>'); //>>>>>>
s3 = s1 + s2; //Hola mundo>>>>>>
s4 = " cruel"; // cruel
s1 += s4; //Hola mundo cruel
EJEMPLO DE ORDENAMIENTO
void ordenarCadenas(string s[], int cantDatos){
string tmp;
for (int i=0; i<cantDatos;i++){ Comparacin de Strings
for(int j=0;j<cantDatos-i-1;j++){
if(s[j]>s[j+1]){
tmp = s[j];
s[j] = s[j+1];
s[j+1] = tmp;
}
} Ordenamiento de
} Burbuja
}
EJEMPLOS DE USO DE FUNCIONES
string s1= "Hola mundo";
string s2,s3,s4,s5;
s4 = " cruel";
s5 = " de nuevo";
s1.append(s4).append(s5); // Hola mundo cruel de nuevo
s1.find("de"); //17
s1.find("mundo"); //5
s1.find("mu"); //5
s1.substr(5,3); //mun
s1.substr(0,s1.find("cruel")); //hola mundo
s1.erase(3,5); //Holdo cruel de nuevo
s1.erase(s1.find("de nuevo")); //Holdo cruel
LA CLASE VECTOR
LENGUAJE DE PROGRAMACIN ESTRUCTURADO
CLASE VECTOR
Hemos venido trabajando con vectores
(arreglos) de C.
Una de sus principales limitaciones que
tienen es que la cantidad de elementos
debe ser fija.
La clase vector permite almacenar valores
del mismo tipo y poder modificar su
tamao cuando sea necesario.
Se declaran de la siguiente manera:
vector<tipoDato> nombreVar
vector<tipoDato> nombreVar(capac)
ACCESO A LOS ELEMENTOS
De manera equivalente pueden vector<struct Alumno> v1;
utilizarse los siguientes mtodos:
struct Alumno a1, a2;
Por invocacin a la funcin at y utilizando el
ndice del elemento. a1.inicializar(10,12,13,2);
Mediante el operador [] (similar al uso de a2.inicializar(4,5,5,6);
vectores de C).
cout<<v1.at(0).nota2<<endl;
La diferencia principal es que mediante
el uso de la funcin at, el programa cout<<v1[0].nota2<<endl;
podr saber si el ndice est fuera del cout<<v1.at(1).promedio<<endl;
rango de elementos del vector
Las dos primeras son equivalentes
FUNCIONES IMPORTANTES
Funcin Utilidad

push_back() Inserta un valor al final del vector, de ser necesario expande su tamao.

empty() Devuelve si el vector se encuentra vaco. De utilidad en bloques if.

size() Devuelve el tamao del vector. Es necesario recalcar que en caso se haya especificado
una capacidad al declarar y no se haya ampliado el tamao, de devolver dicho valor (as
no se haya incluido elementos)
begin() Devuelve un iterator al inicio del vector.

end() Devuelve un iterator al final del vector.


FUNCIN PUSH_BACK()
vector<struct Alumno> v1;
struct Alumno a1, a2;
a1.inicializar(10,12,13,2);
a2.inicializar(4,5,5,6);
cout<<"Tamanio inicial: " << v1.size()<<endl;
v1.push_back(a1);
v1.push_back(a2); Qu valores muestra v1.size()?

cout<<"Tamanio final: " << v1.size()<<endl;


USO DE ITERATORS
vector<struct Alumno> v1;
struct Alumno a1, a2;
Acceso a elementos de la clase
a1.inicializar(10,12,13,2);
a2.inicializar(4,5,5,6);
v1.push_back(a1);
v1.push_back(a2);
vector<struct Alumno>::iterator v = v1.begin();
while(v!=v1.end()){
(*v).imprimir(); La variable es un puntero
v++;
}
FUNCIONES PARA INSERCIN Y ELIMINACIN
Existe un conjunto de funciones que requieren del uso de iterators para
poder
Funcin Utilidad

insert() Inserta valores en una posicin relativa a un iterator (p. ej.: begin)

erase() A diferencia de remove, elimina los valores para una posicin determinada.

vector<double> promedios(10);
promedios.insert (promedios.begin() + 5, 1.4142);
promedios.erase (promedios.begin() + 3);
Funciones Matemticas
LENGUAJE DE PROGRAMACIN ESTRUCTURADO
FUNCIONES MATEMTICAS
Las libreras estndar de C++
proveen distintas funciones
matemticas.
Se pueden referenciar como
<math.h> para programas en C y
<cmath> para programas en C++.
Por razones de compatibilidad es
posible encontrar ambas.
FUNCIONES MATEMTICAS
Operacin Descripcin

pow() Permite elevar un nmero a una potencia determinada.

sqrt() Obtiene la raz cuadrada de un nmero.

cbrt() Calcula la raz cbica de un nmero

exp() Calcula la funcin exponencial dado un nmero

log() Calcula el logaritmo natural de un nmero

log10() Calcula el logaritmo en base 10 de un nmero


FUNCIONES MATEMTICAS
Operacin Descripcin

ceil() Redondeo hacia arriba.


floor() Redondeo hacia abajo.
trunc() Retorna la parte entera, ignorando decimales.
rint() Redondea al siguiente valor entero segn los parmetros de redondeo
(rounding mode).
remainder() Calcula el residuo de la divisin entre un numerador y un denominador

rand() Permite generar nmeros aleatorios. Esta funcin se encuentra en <cstdlib>


FUNCIONES MATEMTICAS
Funcin Descripcin

cos() Calcula el coseno de un ngulo expresado en radianes.

sin() Calcula el seno de un ngulo expresado en radianes.

tan() Calcula la tangente de un ngulo expresado en radianes.

acos() Calcula el coseno de un ngulo expresado en radianes.

asin() Calcula el arco seno de un determinado valor.

atan() Calcula el arco tangente de un determinado valor.


EJEMPLOS
cout<<sqrt(2)<<endl; //1.41421
cout<<pow(3,4)<<endl; //81
cout<<pow(9,0.5)<<endl; //3
cout<<pow(0.3,0.2)<<endl; //0.786003
cout<<cbrt(81)<<endl; //4.32675
cout<<log(13)<<endl; //2.56495
cout<<exp(2.3)<<endl; //9.97418
cout<<log(exp(23))<<endl; //23
cout<<log10(10000)<<endl; //4
cout<<log10(4856)<<endl; //3.68628
EJEMPLOS
cout<<ceil(3.6)<<endl; //4
cout<<ceil(-6.4)<<endl; //-6
cout<<floor(3.6)<<endl; //3
cout<<floor(-6.4)<<endl; //-7
cout<<trunc(3.6)<<endl; //3
cout<<trunc(-6.4)<<endl; //-6
cout<<remainder(12,5)<<endl; //2
cout<<remainder(0.6,0.14)<<endl; //0.04 IGUAL QUE 0.6%0.14?
cout<<rand()<<endl; //41?
srand(time(NULL));
cout<<rand()<<endl; //18467?
cout<<RAND_MAX<<endl; //32767 EJECUTE EL PROGRAMA
double d = 1.0*rand()/RAND_MAX; VARIAS VECES
cout<<d<<endl; //0.193304?
EJEMPLOS
cout<< cos(M_PI)<<endl; //-1
cout<< sin(M_PI/2)<<endl; //1
cout<< sin(M_PI_2)<<endl; //1
cout<< tan(M_PI/4)<<endl; //1
cout<< tan(M_PI/8)<<endl; //0.414214
cout<< sin(0.8)<<endl; //0.717356
cout<<asin(-1)<<endl; //-1.5708
cout<<acos(3)<<endl; //nan A QU SE REFIERE?
cout<<atan(0.565)<<endl; //0.514287

Você também pode gostar