Programación Instituto Tecnológico de Celaya APLICACIONES DE CADENAS DE CARACTERES 1. Escriba un programa en C++ que reciba como dato una cadena de caracteres en letras minúsculas y la convierta de forma que se obtenga una cadena equivalente en letras mayúsculas. 2. Se dice que una cadena de caracteres es un anagrama de otra si ambas consisten sólo de letras y, tratando como iguales las letras mayúsculas y minúsculas, ambas contienen las mismas letras (no necesariamente en el mismo orden). Escriba un programa en C++ que reciba como dato a dos cadenas de caracteres y las modifique de forma que se obtengan los anagramas correspondientes. Por ejemplo: Datos: “gato” “raton” Anagramas: “gatorn” “ratong” Ingeniería Química Programación #include<iostream.h> #include <string.h> #include<stdlib.h> Instituto Tecnológico de Celaya SOLUCIONES int main() { /* Este programa convierte una cadena de letras minusculas a su correspondiente equivalente en letras mayusculas */ char palabra_min[21], palabra_may[21]; int len,n; /* Dato */ cout<<"Dame una palabra en minusculas. Maximo 20 caracteres \n"; cin>>palabra_min; /*calculo del numero de caracteres*/ len = strlen(palabra_min); /*Conversion a mayusculas*/ for(n=1; n<=len; n++) palabra_may[n-1] = palabra_min[n-1] - 32; /* Convertir arreglo en cadena */ palabra_may[len] = '\0'; /* Salida del resultado */ cout<<"\n"; cout<<"La palabra equivalente en mayusculas es "<<palabra_may<<"\n"; cout<<"\n"; system("PAUSE"); return 0; } Ingeniería Química Programación Instituto Tecnológico de Celaya #include<iostream.h> #include <string.h> #include<stdlib.h> int main() { /* Este programa obtiene los anagramas de dos cadenas de caracteres */ char cadena1[21], cadena2[21]; char anagrama1[41], anagrama2[41]; char aux[2]; int len1,len2, n, m, add; /* Datos */ cout<<"Dame una cadena de caracteres (letras, maximo 20) \n"; cin>>cadena1; cout<<"Dame otra cadena de caracteres (letras, maximo 20) \n"; cin>>cadena2; /*calculo del numero de caracteres de las cadenas*/ len1 = strlen(cadena1); len2 = strlen(cadena2); /* Asignando contenido inicial */ strcpy(anagrama1,cadena1); strcpy(anagrama2,cadena2); /*Obteniendo los anagramas*/ /* Primero */ for(n=1; n<=len2;n++) { add=1; for(m=1; m<=len1;m++) { if((cadena2[n-1]== cadena1[m-1]) || (cadena2[n-1]== (cadena1[m-1]32))) { add =0; break; } } if(add==1) { aux[0] = cadena2[n-1]; aux[1] = '\0'; strcat(anagrama1,aux); } Ingeniería Química Programación Instituto Tecnológico de Celaya } /* Segundo */ for(n=1; n<=len1;n++) { add=1; for(m=1; m<=len2;m++) { if((cadena1[n-1]== cadena2[m-1]) || (cadena1[n-1]== (cadena2[m-1]32))) { add =0; break; } } if(add==1) { aux[0] = cadena1[n-1]; aux[1] = '\0'; strcat(anagrama2,aux); } } /* Salida del resultado */ cout<<"\n"; cout<<"Las palabras son \t"<<cadena1<<"\t\t"<<cadena2<<"\n"; cout<<"Los anagramas son \t"<<anagrama1<<"\t\t"<<anagrama2<<"\n"; cout<<"\n"; system("PAUSE"); return 0; } Ingeniería Química Programación Instituto Tecnológico de Celaya PRÁCTICA DE APLICACIÓN DE CADENAS DE CARACTERES Los siguientes dos programas ejemplifican el uso y manipulación de cadenas de caracteres. 1) Codifique y ejecute lo siguiente. Omita comentarios en su código si requiere ahorro de tiempo #include <fstream.h> /* libreria para archivos IO */ #include<iostream.h> #include <string.h> /* libreria de funciones para cadenas de caracteres*/ #include<stdlib.h> int main() { /* Este programa lee las partes de un nombre usando cadenas de caracteres y luego las integra y analiza usando funciones de manipulación de cadenas. El nombre completo lo guarda en un archivo y lo muestra en pantalla */ char materia[20]={“Matematicas”}; /* Inicializando una cadena*/ char nombre_p[20], apellido_pat[20], apellido_mat[20]; /* Otras cadenas */ char nombre[60]; /* Una ultima cadena */ double calificacion; ofstream csalida; /* Instruccion similar a cout */ csalida.open("lista.dat"); /* Este es el archivo de salida, lista.dat */ /* Ahora se piden cadenas de caracteres, no solo un caracter */ cout<<"Dame tu nombre propio. Si tienes mas de uno, dame el primero \n"; cin>>nombre_p; cout<<"Dame apellido paterno. Solo dame una palabra si tiene muchas\n"; cin>>apellido_pat; cout<<"Dame apellido paterno. Solo dame una palabra si tiene muchas\n"; cin>>apellido_mat; cout<<"Dame tu calificacion final de ”<< materia <<”\n"; cin>>calificacion; /*Uso de funciones: formacion del nombre completo*/ strcpy(nombre, nombre_p); /* copia la cadena nombre_p a nombre */ strcat(nombre, “ “); /* Añade un espacio a nombre */ strcat(nombre, apellido_pat); /* Añade apellido_pat a nombre */ strcat(nombre, “ “); /* Añade un espacio a nombre*/ strcat(nombre, apellido_mat); /* Añade apellido_mat a nombre*/ Ingeniería Química Programación Instituto Tecnológico de Celaya /* Salida de la informacion a pantalla y a archivo */ cout<<"\n"; cout<<materia<<”\n”; /*A pantalla*/ cout<<nombre<<"\t"<<calificacion<<"\n"; csalida<<materia<<”\n”; /* A archivo */ csalida<<nombre<<"\t"<<calificacion<<"\n"; /* Cierra el archivo lista.dat*/ csalida.close(); } cout<<"\n"; system("PAUSE"); return 0; 2) Use el explorador de windows para buscar el archivo lista.dat Este archivo deberá contener la misma información que salió a pantalla en el programa anterior. 3) Escriba y ejecute el siguiente programa. Use nombres propios de una sola palabra #include #include #include #include <fstream.h> <iostream.h> <string.h> <stdlib.h> int main() { char nombre[2][20]; /* Observe: Arreglo de cadenas de caracteres */ cout<<”Dame un nombre propio \n”; cin>>nombre[0]; cout<<”Dame otro nombre propio \n”; cin>>nombre[1]; /*Se muestra ahora en pantalla cada nombre observe que se usa un solo indice */ cout<<"\n"; cout<<”El primer nombre es ”<<nombre[0]<<”\n”; cout<<”El segundo nombre es ”<<nombre[1]<<”\n”; cout<<"\n"; Ingeniería Química Programación Instituto Tecnológico de Celaya /*Uso de funciones: comparacion de los dos nombres anteriores*/ if( ! strcmp(nombre[0],nombre[1]) ) cout<<”Los dos nombres anteriores son iguales \n”; else cout<<”Los dos nombres anteriores son diferentes \n”; cout<<"\n"; system("PAUSE"); return 0; } Ingeniería Química