Este documento contiene información sobre cadenas de caracteres en C++. Incluye ejemplos de cómo invertir una cadena, eliminar caracteres de una cadena, y encontrar la palabra más larga en una oración. También explica conceptos básicos como asignar cadenas, obtener la longitud de una cadena, recortar subcadenas, y concatenar cadenas.
1. Modelo 8 : Invertir una cadena1.
Modelo 9: Invertir cadena desde el centro2.
Modelo 10: Eliminar un carácter de la cadena3.
Modelo 11: La palabra mas larga de una oracion4.
Cadenas con String
Tipo String1.
Mayusculas y Minusculas
String S = 's';
Edit1->Text = S.UpperCase();
String String1 = "[Borland C++ Builder]";
Edit1->Text = String1.LowerCase();
Asignar String cadena = 'Hola mundo'
Longitud cadena cadena.Length()
Cortar una cadena cadena.SubString(posicion,NroCaracteres)
Ultimo carácter cadena.LastChar()
Obtener el carácter 2do cadena[2]
Eliminar caracteres cad.Delete(posicion,nroElementos);
Eliminar los blancos a ambos lados
de la cadena
cad.Trim()
Averiguar si la cadena es vacia cad.IsEmpty()
Concatenar String cadena="mundo";
String cad="hola";
String res=cadena.LastChar()+cad;
Posiciones validas Pos Inicio = 1
Pos Final = Longitud de la cadena
Operaciones Basicas
Tipo AnsiString1.
Suma
Comparar
AnsiString Nombre = "Paul ";
AnsiString Apellido = "Lombard";
AppendStr(Nombre, Apellido);
Edit1->Text = Nombre;
Ejemplos Cadenas: step by step
Apuntes Recur_1 página 1
3. Algoritmo para invertir una cadena de caracteres
Análisis del Algoritmo1.
hola
Para invertir una cadena
Tipo: Función o Procesoi.
Tipos de datos que entran1)
Tipo de dato que retorna si es Función.2)
Parámetrosii.
Perfil del método: Identificara.
String cad = InvCad ( String cadena)
Tamaño de la cadena = 1 --> Este es el caso base1)
length(cadena)=1
Caso Base : El algoritmo no se llama a si mismo. Permite que el
algoritmo termine en algún momento
i.
Caso General : El método se llama a si mismoii.
Análisis de casosb.
InvCad Inv{
cadena
InvCad(cadena.SubString
(1,cadena.Length()-1))
cadena.Length()=1 ;
cadena.Length()>1
Codificación en C++c.
String InvCad(String cadena){
String res;
if(cadena.Length()==1){
return cadena;
}else{
res=InvCad(cadena.SubString(1,cadena.Length()-1));
res=cadena.LastChar()+res;
return res;
}
}
Validación del algoritmo : Observar si termina y resuelve el problemad.
Diseño del Algoritmo2.
Metodología:
Modelo 8: Invertir una cadena
viernes, 21 de marzo de 2014 11:32
Apuntes Recur_1 página 3
4. Validación del algoritmo : Observar si termina y resuelve el problemad.
Secuenciación en clase:
Mostrar la pila que se forma por cada llamada recursiva. Esta sirve para ver
que ahí se guarda (dirección de memoria + valor del parámetros)
1.
Aquí se refleja lo que pasa en cada RETURN2.
Comienza desde el caso base el des Apilado.3.
Apuntes Recur_1 página 4
5. Algoritmo para encontrar la palabra más larga de una oraciòn
Análisis del Algoritmo1.
Hola mundo xxx 1 ==> mundo
Para la frase
Tipo: Función o Procesoi.
Tipos de datos que entran1)
Tipo de dato que retorna si es Función.2)
Parámetrosii.
Perfil del método: Identificara.
String cadena = BusLarga ( String cad, String &clon)
Tamaño de la cadena = 0 --> Este es el caso base1)
length(cad)=0
Caso Base : El algoritmo no se llama a si mismo. Permite que el algoritmo termine
en algún momento
i.
Caso General : El método se llama a si mismoii.
Análisis de casosb.
BusLarga (cad,clon) { cad cad.Length() =0;
BusLarga(cad.Trim,clon) cad.Length()>0;
Codificación en C++c.
void __fastcall TForm1::PalabraLarga1Click(TObject *Sender)
{
String cad=InputBox("PALABRA LARGA","Introduzca una cadena de palabras","0");
int tam=0;
String car="";
String larga=BusLarga(cad,car);
ShowMessage(larga);
}
String ObtPalabra(String cad,int pos){
String x;
if (pos >cad.Length()) return cad;
else{
x=cad[pos];
x=x.Trim() ;
Diseño del Algoritmo2.
Metodología:
Modelo 11: Palabra mas larga de una oración
viernes, 21 de marzo de 2014 11:32
Apuntes Recur_1 página 5
6. x=x.Trim() ;
String cad1;
if (x.IsEmpty()) cad1=cad.SubString(1,pos-1);
else{
cad1=ObtPalabra(cad,pos+1);
}
return cad1;
}
};
String BusLarga(String cad,String &clon){
if(cad.Length()==0) return cad ;
else{
int pos=1;
String pal=ObtPalabra(cad,pos);
if(pal.Length()>clon.Length())clon=pal;
cad=cad.Delete(1,pos);
cad=BusLarga(cad.TrimLeft(),clon);
return clon;
}
}
Validación del algoritmo : Observar si termina y resuelve el problemad.
Secuenciación en clase:
Mostrar la pila que se forma por cada llamada recursiva. Esta sirve para ver que ahí se guarda
(dirección de memoria + valor del parámetros)
1.
Aquí se refleja lo que pasa en cada RETURN2.
Comienza desde el caso base el des Apilado.3.
Apuntes Recur_1 página 6