Ingeniería de Sistemas – Técnicas de Programación I C++ CARÁCTER (char) char (character) es un tipo de dato que puede almacenar cualquier carácter del código ascii. Un carácter siempre debe estar entre comillas simples (apóstrofes) Ejemplos: ‘1’ , ’f’ , ’F’ , ’&’ , ’%’ , ’)’ , ’a’ , ’A’ , ’3’ , ’-’ , ’.’ , ’w’ , ’6’ , ’/’ CODIGO ASCII A continuación veremos algunos programas con el manejo de caracteres. Programa que visualiza el mayor de dos caracteres introducidos por teclado Como cada carácter está asociado a un número decimal del código ascii, el carácter mayor será el carácter cuyo valor decimal sea mayor, por ejemplo ‘a’ es mayor que ‘A’ porque el valor decimal de ‘a’ es mayor que el de ‘A’ char a,b; cin>>a>>b; if(a>b) cout<<"el mayor es "<<a; else cout<<"el mayor es "<<b; Ingeniería de Sistemas – Técnicas de Programación I C++ Programa permite introducir dos números y un signo (operación matemática), si el signo es suma los números deben sumarse y si el signo es resta los números deben restarse. int num1,num2,num3; char signo; cin>>num1>>num2; cin>>signo; if(signo=='+') { num3=num1+num2; cout<<num3; } else { if(signo=='-') { num3=num1-num2; cout<<num3; } else cout<<"no es suma ni resta"; } Programa que dado un carácter por teclado visualiza su correspondiente número decimal asociado. char car; int num; cin>>car; num=(int)(car); cout<<"su valor decimal es: "<<num; Programa que dado un número por teclado visualiza su correspondiente caracter asociado. char car; int num; cin>>num; car=(char)(num); cout<<"su valor decimal es: "<<car; Ingeniería de Sistemas – Técnicas de Programación I C++ CADENAS Una cadena es un vector de caracteres, una cadena debe estar encerrada entre comillas dobles. Por ejemplo una cadena seria: cad=”Hola mundo” La cadena “hola mundo” está formado por 10 caracteres. ‘H’ ‘o’ ‘l’ ‘a’ ‘ ‘ ‘m’ ‘u’ ‘n’ ‘d’ ‘o’ Posiciones de cada carácter 0 1 2 3 4 5 6 7 8 9 A cada posición de la cadena se la maneja como si fuera una variable de tipo char. Por ejemplo: char c; c=cad[0]; c=cad[3]; c=cad[4]; c tomará el valor de ‘H’ c tomará el valor de ‘a’ c tomará el valor de ‘ ’ (espacio) CADENAS EN C++ El manejo de cadenas en C++ se la realiza mediante un vector de caracteres como se muestra a continuación: char cad[11]=”Hola mundo”; También se puede manejar cadenas con punteros de cadenas, por ejemplo: char *cad=”Hola mundo”; Pero, en este tutorial el manejo de cadenas se realizará mediante la clase string que evita muchos problemas que existen al manejar cadenas. Nota.- la clase string no es soportado por cualquier compilador, por ejemplo el compilador de borland Turbo c++ no soporta. Pero, si soporta el compilador del “CodeBlock” o el compilador “DevC++” A continuación y mediante algunos ejemplos iremos viendo algunas funciones de las cadenas. 1. Insertar una palabra por teclado. Se utiliza la función cin>> #include <iostream> using namespace std; int main() { string cad; cin>>cad; cout<<cad; return 0; } Ingeniería de Sistemas – Técnicas de Programación I C++ 2. Visualizar la longitud de una cadena. Se utiliza la función length(), la misma retorna un valor entero #include <iostream> using namespace std; int main() { string cad; cin>>cad; int tam=cad.length(); cout<<tam; return 0; } 3. Visualizar inversamente una cadena insertada por teclado string cad; cin>>cad; int tam=cad.length(); for(int i=tam-1;i>=0;i--) cout<<cad[i]; 4. Concatenar (unir) tres cadenas string cad1,cad2,cad3,cad4; cad1="Ingenieria"; cad2="de"; cad3="Sistemas"; cad4=cad1+” ”+cad2+” ”+cad3; cout<<cad4<<endl; 5. Cuántas vocales ‘a’ hay en una palabra introducida por teclado. int cant=0; string cad; cin>>cad; int t=cad.length(); for(int i=0;i<t;i++) if(cad[i]=='a') cant++; cout<<cant; 6. Adición de un carácter al final de una cadena. Se puede generar una nueva cadena a partir de otra como se muestra en el siguiente ejemplo: string A,B; A="alberto"; B=""; //una cadena puede tener el valor de vacío (dos comillas sin nada en medio) Ingeniería de Sistemas – Técnicas de Programación I C++ int tam=A.length(); for(int i=0;i<tam;i++) B=B+A[i]; //A una cadena se le puede añadir al final un carácter cout<<B; INSERCION DE UNA FRASE MEDIANTE TECLADO (getline) La instrucción cin>> solo permite introducir palabras (cadenas sin espacios), para introducir cadenas que contengan espacios se debe utilizar la instrucción getline(cin,[cadena]) 7. En el siguiente ejemplo se introduce una frase por teclado, posteriormente se visualiza cuantas palabras hay en la frase. string cad; int pal=0; getline(cin,cad); int tam=cad.length(); for(int i=0;i<tam;i++) if(cad[i]==' ') pal++; pal++; cout <<"hay "<<pal<<" palabras"; FUNCIONES DE CADENAS MAS UTILIZADAS EN C++ Operador compare Función Compara 2 cadenas Tipo int find Verifica si una cadena esta dentro de otra int length substr Devuelve la longitud de una cadena Devuelve una subcadena de una cadena int string 8. Devuelve mayor a cero, menor a cero o igual a cero Devuelve -1 si no está dentro la cadena, caso contrario devuelve la posición donde se encuetra Programa que visualiza el mayor de 2 cadenas string A,B; A="oruro"; B="Oruro"; if(A.compare(B)==0) //devuelve “mayor a 0”, “menor a 0” o “igual a 0” cout<<"iguales"; else if(A.compare(B)>0) cout<<"el mayor es"<<A; else Ingeniería de Sistemas – Técnicas de Programación I C++ cout<<"el mayor es"<<B; 9. Programa que copia una subcadena en otra subcadena. string A,B; A="Tortuga"; B=A.substr(3,2); //B tomará el valor de “tu”, a partir de la posición 3, 2 caracteres cout<<B; 10. Programa que visualiza “esta contenida” si una cadena esta dentro de otra string A="mariposa"; string B="oso"; int p=A.find(B); if(p==-1) cout<<"no esta contenida"; else cout<<"esta contenida";