You are on page 1of 13

UNIVERSIDAD NACIONAL DE INGNENIERIA

Facultad de Ingeniera Industrial y de Sistemas

Cadenas de
Caracteres

Objetivos:
*Comprender de forma cmo es el procesamiento de
cadenas.
* Como defintir la longitud fsica de una cadena.
* Como establecer dato de usuario con nombre de la
cadena.
* Definir vector cadena.
* Definir vector de cadenas.
*Usar funciones de comparacin (strcmp), convertir
caracteres a maysculas (strupper), etc.
* Funciones para el tratamiento de cadenas: strlen(),
strcat().
* Copia de cadenas: stpcpy(), strcpy(), strncpy().

Definicin.Una cadena de caracteres es una secuencia de cero o ms smbolos que


incluyen letras, dgitos y caracteres especiales o es un arreglo de caracteres
qu, en el caso de C++, debe terminar en el carcter nulo (\0'). Una cadena
puede representarse, o bien como un array comn (encerrado entre llaves),
o bien como una serie de caracteres encerrado entre comillas.
Existen diferentes juegos de caracteres, dentro de los que se destacan el
cdigo ASCII y el EBCDIC
Ejemplo:
1.- {'A', 'l', 'a', 'n', 'd', , 'C', '+', '\0' } //es una cadena
2.- "Borland C++ 5
//NO Es una cadena
3.- {'s','u',n,'a','l',' ','C','+'} //No es una cadena

Sintaxis
char cadena[30];
//Cadena de 30 caracteres + '\0';
Se puede omitir la longitud de la cadena en la declaracin si es
que tambin se la inicializa:
char salida[ ]=" Lenguajues de Programacion Estructurado";

Observacin:
1.-Si declara cad[ ]: Solicita un valor
2.-Si declara cad [ 4 ]: hasta encontrar un espacio en blanco
3.- coimprimir(cad1+1); imprime cad1 a partir de su segundo
carcter
Notas:
Longitud: es el nmero mximo de caracteres a considerar
en la entrada. Generalmente se usa el formato sizeof
(cadena) para leer una cadena cuyo tamao mximo es
desconocido.
Escape: es el carcter con el cual terminar la lectura de la
cadena. Es opcional.
3.- Se puede acceder individualmente a cada carcter de la
cadena, como en un arreglo, llamndolo por su ndice, el cual
representa su posicin en la cadena.

Problema.- Disear un programa que permita leer una


cadena de longitud n caracteres , luego mostrarlo en forma
invertida.

m
[0]

\
0
[1] [2] [3]

Longitud lgica : 3
Longitud fsica : 2
Procesos: i
: 0, 1,2
Fin cadena
: \0

void main()
{ char cad1[30],inv[130]; int i,lon;
gotoxy(10,2);cout<<"INVERTIR CADENA ";
gotoxy(5,3);cout<<"______________________________";
gotoxy(4,5);cout<<"Ingrese Cadena concatenada :
;gets(cad1);
lon=strlen(cad1);
for(i=0;i<lon;i++)
{inv[lon-i-1]=cad1[i];
inv[lon]='\0'; //para fin de cadena
}
gotoxy(10,8);cout<<"Cadena invertida = "<<inv; getche();
}

Problema.- Disear un programa que permita leer una cadena


de longitud 30 caracteres (puede incluir espacio en blanco) y
luego generar un reporte que a partir del segundor carcter sean
todos expresados en maysculas.
Solucin.Void main() {
char cad1[30]
cout<<"\nIngrese un una cadena:"; gets(cad1);
for(i=2;i<=sizeof(cad1);i++)
{ cad1[i]=toupper(cad1[i]);
cout<< Reporte = :"<<cad1;
}
Ejemplo:
Ingrese una cadena:
Lenguaje de programacin
Salida:maysculas y minsculas:
leNGUAJE DE PROGRAMACION

Disear un
programa que
permita leer una
un texto
y
luego el usuario
ingresa la letra
a eliminar del
texto, asimismo
contar
el
numero
de
caracteres

gotoxy(17,2); cout<<" CORRECTOR DE TEXTO ";


gotoxy(13,3); cout<<" ____________________________";
gotoxy(7,5); cout<<"Ingrese: Texto
Letra a borrar : ";
gotoxy(16,7);gets(cad);
gotoxy(45,7);gets(letra);
i=0;
while(cad[i]!='\0')
{ if(letra[0]==cad[i])
{ j=i;
while(cad[j]!='\0')
{ cad[j]=cad[j+1];
j++;
}
}
i++;
}
gotoxy(7,10); cout<<"Numero de caracteres = "<<i;
gotoxy(7,12); cout<<"texto sin error = "<<cad; getche();

Proceso sssss
dimension k[10];
definir cad2,cad3,k como cadenas;
definir t,i como entero;
t<-0;
Escribir "Ingrewse cadena 2" ;Leer cad2;
mientras cad2<> '.' hacer
k[t]<-cad2;
Escribir "Ingrewse cadena 2" ;Leer cad2;
t<-t+1;
FinMientras
escribir cad2 ; //imprime "Curso Algoritmos, Estudien, Estudien
para i<-0 hasta t-1 con paso 1 hacer
Escribir k[i];
FinPara
FinProceso

// Se ingresa una lista de nombres (la lista termina // cuando se ingresa un


nombre en blanco) no permitiendo // ingresar repetidos y luego se ordena y
muestra
Proceso OrdenaLista
Definir nombre,lista,aux Como Cadenas;
Definir se_repite Como Logico;
Definir cant,i,j,pos_menor Como Enteros;
Dimension lista[200];
Escribir "Ingrese los nombres (enter en blanco para terminar):";
// leer la lista
cant<-0;
Leer nombre;
Mientras nombre<>"" Hacer
lista[cant]<-nombre;
cant<-cant+1;
Repetir // leer un nombre y ver que no este ya en la lista
Leer nombre;
se_repite<-Falso;
Para i<-0 Hasta cant-1 Hacer
Si nombre=lista[i] Entonces
se_repite<-Verdadero;
FinSi
FinPara
Hasta Que ~ se_repite

// ordenar
Para i<-0 Hasta cant-2 Hacer
// busca el menor entre i y cant
pos_menor<-i;
Para j<-i+1 Hasta cant-1 Hacer
Si lista[j]<lista[pos_menor] Entonces
pos_menor<-j;
FinSi
FinPara
// intercambia el que estaba en i con el menor que encontro
aux<-lista[i];
lista[i]<-lista[pos_menor];
lista[pos_menor]<-aux;
FinPara
// mostrar como queda la lista
Escribir "La lista ordenada es:";
Para i<-0 Hasta cant-1 Hacer
Escribir " ",lista[i];
FinPara
FinProceso

Proceso Cadena_caracter
Dimension k[100];
Definir k,cad Como Caracter;
Definir i, J,t,lon Como Entero;
t<-0;
Escribir "Ingrese cadena"; leer cad; sin bajar;
lon <-Longitud(cad);
Escribir "Longitud de la cacena = ",lon;
Para j<-0 Hasta lon Con Paso 1 Hacer
Si Subcadena(cad,j,j)<>'.' Entonces
//j j inicio fin
k[t]<-subcadena[cad,j,j];
t<-t+1;
FinSi
FinPara
Para i<-0 Hasta t-2 Con Paso 1 Hacer
Escribir "caracter[",i,"] = ", k[i];
FinPara
FinProceso

You might also like