Sei sulla pagina 1di 7

Problemas Propuestos de Cadenas

1. Contar el numero de vocales que se encuentran en una cadena

String sPalabra =" ";


int contador = 0;
for(int x=0;x<sPalabra.length();x++) {
if ((sPalabra.charAt(x)=='a') || (sPalabra.charAt(x)=='e')
|| (sPalabra.charAt(x)=='i') || (sPalabra.charAt(x)=='o')
|| (sPalabra.charAt(x)=='u')){
contador++; }
}

2. Contar el numero de consonantes que se encuentran en una cadena.

String sPalabra =" ";


int contador = 0;
for(int x=0;x<sPalabra.length();x++) {
if ((sPalabra.charAt(x)=!'a') & (sPalabra.charAt(x)=!'e')
& (sPalabra.charAt(x)=!'i') & (sPalabra.charAt(x)=!'o')
& (sPalabra.charAt(x)=!'u')){
contador++; }
}

3. Dada una Cadena de caracteres invertirla.

public String reverse(String palabra) {


if (palabra.length() == 1)
return palabra;
else
return reverse(palabra.substring(1));
}

4. Contar cuantas veces se encuentra una subcadena dentro de una cadena.


import java.io.IOException;
import java.util.Scanner;

public class Main {

public static void main(String[] args) throws IOException {


Scanner sc = new Scanner(System.in);
String texto;
char caracter;
int numeroDeVeces = 0;
do {
System.out.println("Introduce texto: ");
texto = sc.nextLine();
} while (texto.isEmpty());
System.out.print("Introduce un carácter: ");
caracter = (char) System.in.read();
numeroDeVeces = contarCaracteres(texto, caracter);
System.out.println("El caracter " + caracter + " aparece " +
numeroDeVeces + " veces");
}

//calcular el número de veces que se repite un carácter en un String


public static int contarCaracteres(String cadena, char caracter) {
int posicion, contador = 0;
//se busca la primera vez que aparece
posicion = cadena.indexOf(caracter);
while (posicion != -1) { //mientras se encuentre el caracter
contador++; //se cuenta
//se sigue buscando a partir de la posición siguiente a la encontrada
posicion = cadena.indexOf(caracter, posicion + 1);
}
return contador;
}
}

5. Ingresar una cadena de caracteres formadas por números y letras, en ese orden y obtenga otra cadena donde
aparezca cada letra tantas veces como lo indique el numero que lo precede. Ejemplo: Si la cadena es
2w4r5f debemos obtener la siguiente cadena: wwrrrrfffff

void Repetir(int, char);


int _tmain(int argc, _TCHAR* argv[])
{
char cadena[12], letra; int incorrect, i, Dim=0;
do{ incorrect=0;
cout<<"\t\tCadena de numeros y letras.\n"
<<"Digite cadena de numeros y letras:\t";
cin>>cadena;
for(i=0;cadena!='\0';i+=2) if(cadena<1){incorrect=1; break;}
}while(incorrect); for(i=0;cadena!='\0';i++) Dim++;
cout<<"\n\nCaracteres generados:\n\t";
for(i=0;i<Dim;i+=2) Repetir(cadena, cadena[i+1]);
system("pause"); return 0;
}
void Repetir(int veces, char letra)
{
for(int i=0;i<veces;i++) cout<<letra;
}
6. Ingresar una cadena y determinar cuantas palabras se encuentran en la cadena. Cada palabra se separa por medio de
un espacio en blanco.

int i, con=0;
String cadena, palabra="";

System.out.println("Ingrese la cadena a evaluar: ");


cadena=br.readLine();
for(i=0;i<cadena.length();i++){
if(cadena.charAt(i)==' '){
con++;
}
}
System.out.println("La cadena contiene "+con+" palabras");
}

7. Leer una frase y encontrar la palabra de mayor longitud. El programa debe imprimir la palabra como el número de
caracteres de la misma

int i, c=0;
String cadena, palabra="", mostrar = null;

System.out.println("Ingrese la cadena: ");


cadena=br.readLine();
cadena+=" ";

for(i=0;i<cadena.length();i++){
palabra=palabra+cadena.charAt(i);
if(cadena.charAt(i)==' '){
if(palabra.length()-1>c){
c=palabra.length()-1;
mostrar=palabra.trim();
}
palabra="";
}
}
System.out.println("La palabra de mayor longitud es: "+mostrar);
System.out.println("Su longitud es: "+c);
}
}
8. Ingresar una cadena de caracteres y obtener otra con todos los caracteres de las posiciones impares de la cadena.
9. Hacer un programa que al recibir como dato una cadena de caracteres que represente una fecha en formato
(dd/mm/aa), genere otra cadena con la misma fecha pero con formato (dd de nombre del mes de aaaa). Por ejemplo si
se ingresa la cadena: 20/11/2006 la otra cadena será: 20 de Noviembre de 2006
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char* meses(int); /*Prototipo de Funcion.*/

int main()
{
int dia, mes, ano, ano1 = 0;
char mes1[20];

printf("Ingrese la Fecha(dd/mm/aa): ");


fflush(stdin);
scanf("%d/%d/%d",&dia,&mes,&ano);

ano1 = 20 * 100 + ano;


strcpy(mes1,meses(mes));

printf("%d de %s de %d\n",dia,mes1,ano1);
system("pause");
return 0;

system("pause");
return 0;

}
char* meses(int m)
{

char meses[12][11]={ "Enero", "Febrero", "Marzo",


"Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre",
"Octubre", "Noviembre", "Diciembre"};
return meses[m-1];
}
10. Ingresar una frase y modificarla convirtiendo el primer carácter de cada palabra si esta fuera una letra, de
minúsculas a mayúsculas.
char[] caracteres = cadena.toCharArray();

caracteres[0] = Character.toUpperCase(caracteres[0]);

// el -2 es para evitar una excepción al caernos del arreglo


for (int i = 0; i < cadena.length()- 2; i++)

// Es 'palabra'

if (caracteres[i] == ' ' || caracteres[i] == '.' || caracteres[i] == ',')

// Reemplazamos

caracteres[i + 1] = Character.toUpperCase(caracteres[i + 1]);

11. Ingresar un numero telefónico en formato de cadena y luego lo convierta de la siguiente manera:
Numero Telefonico : 5256284000
Nueva Cadena : (52)-5-6284000

int i;
String cadena,c1="", c2="", c3="";
System.out.println("Ingrese la cadena a evaluar: ");
cadena=br.readLine();

for(i=0;i<cadena.length();i++){
if(i<2){
c1=c1+cadena.charAt(i);
}
else{
if(i==2){
c2+=cadena.charAt(i);
}
else{
c3+=cadena.charAt(i);
}
}
}
System.out.println("la nueva cadena es: \n"+"("+c1+")"+"-"+c2+"-"+c3);
}

12. Hacer un programa que al recibir como datos dos cadenas de caracteres forme una tercera cadena intercalando los
caracteres de las palabras de las cadenas recibidas.

String cadena1, cadena2, cadena3="";

System.out.println("Ingrese la primera cadena: ");


cadena1=br.readLine();
System.out.println("Ingrese la segudna cadena: ");
cadena2=br.readLine();

for(i=0;i<cadena1.length();i++){
cadena3+=cadena1.charAt(i);
for(j=k;j<cadena2.length();j++){
cadena3+=cadena2.charAt(j);
j=cadena2.length();
k++;
}
}
System.out.println("La cadena intercalada es: "+cadena3);
}

13. Hacer un programa que permita la entrada de un nombre consistente en un nombre, un primer apellido y un
segundo apellido, en ese orden, y que imprima a continuación el último apellido, seguido del primer apellido y el
nombre.
14. Hacer un programa cuya entrada sea una cadena S y un factor de multiplicación N, cuya función sea generar la
cadena N veces. Por ejemplo:
Hola,3 se convertirá en Hola Hola Hola
15. Hacer un programa que elimine todas las ocurrencias de una subcadena dentro de una cadena.
16. Hacer un programa que permita convertir un numero n en base 10 a un numero en base b (donde b esta entre 2 y
16).
17. Hacer un programa que permita convertir un numero en arábigos a romanos.
18. Ingrese un texto e indique que letras no han aparecido en el texto.

int ini, con=0;


String texto, nueva="", mensaje="";

System.out.println("Ingrese el texto a evaluar: ");


texto=br.readLine();

for(ini=0;ini<texto.length();ini++){
if(texto.charAt(ini)!=' '){
nueva=nueva+texto.charAt(ini);
}
}
nueva=nueva.toLowerCase();
for(char caracter='a';caracter<='z';caracter++){
for(ini=0;ini<nueva.length();ini++){
if(caracter==nueva.charAt(ini)){
con++;
}
}
if(con==0){
mensaje+=caracter+" ";
}
con=0;
}
System.out.println("\nLos caracteres que faltan son: \n"+mensaje);
}

19. Ingrese un texto e indique el porcentaje de palabras que tiene menos de 5 caracteres y el porcentaje de palabras
con 5 o mas caracteres.

int i;
double porcentaje1, porcentaje2, con=0, p5=0, p6=0;
String texto, palabra="";

System.out.println("Ingrese el texto a evaluar: ");


texto=br.readLine();
texto=texto+" ";
for(i=0;i<texto.length();i++){
palabra+=texto.charAt(i);
if(texto.charAt(i)==' '){
palabra=palabra.trim();
if(palabra.length()<5){
p5++;
}
else{
p6++;
}
palabra="";
con++;
}
}

porcentaje1=(double)((p5/con)*100);
porcentaje2=(double)((p6/con)*100);
System.out.println("El porcentaje de palabras con menos de 5 caracteres es: "+porcentaje1+" %");
System.out.println("El porcentaje de palabras con 5 o mas caracteres es: "+porcentaje2+" %");
}

20. Escriba un programa que lea un numero binario y muestre su valor decimal. Almacene los dígitos binarios en un
String.
21. Construir una funcion para que busque una subcadena en una cadena a partir de una determinada posición y que
devuelva la posición donde se encuentra la subcadena en caso contrario que devuelva cero.
22. Escriba un progrma que lea una frase, sustituir todas las secuencias de dos o varios blancos por un solo blanco y
visualizar la frase obtenida.
23. Escriba un programa que lea una frase y a continuación visualice cada palabra de la frase en columnas, seguida
del número de letras que tiene cada palabra.

int i, j;
String frase, palabra="", nueva="";
System.out.println("Ingrese la frase a evaluar: ");
frase=br.readLine();
frase+=" ";

for(i=0;i<frase.length();i++){
palabra+=frase.charAt(i);
if(frase.charAt(i)==' '){
palabra=palabra.trim();
nueva=palabra;
for(j=0;j<nueva.length();j++){
System.out.println("\t"+nueva.charAt(j));
}
System.out.println("\t"+nueva.length()+"\n\n");
palabra="";
}
}
}
24. Escriba un programa que calcule la frecuencia de aparición de las vocales de un texto proporcionado por el
usuario. Esta solucion se debe presentar en forma de histograma

a 15 ***************
e 8 ********
….

int i, c1=0, c2=0,c3=0, c4=0, c5=0;


String texto, m1="", m2="", m3="", m4="", m5="";

System.out.println("Ingrese el texto a evaluar: ");


texto=br.readLine();
texto=texto.toLowerCase();
for(i=0;i<texto.length();i++){
if(texto.charAt(i)=='a'){
c1++;
m1+="*";
}
if(texto.charAt(i)=='e'){
c2++;
m2+="*";
}
if(texto.charAt(i)=='i'){
c3++;
m3+="*";
}
if(texto.charAt(i)=='o'){
c4++;
m4+="*";
}
if(texto.charAt(i)=='u'){
c5++;
m5+="*";
}
}
System.out.println("");
System.out.println("a"+" "+c1+" "+m1);
System.out.println("e"+" "+c2+" "+m2);
System.out.println("i"+" "+c3+" "+m3);
System.out.println("o"+" "+c4+" "+m4);
System.out.println("u"+" "+c5+" "+m5);
}
}
25. Ingresar una frase y reportar cada palabra en una linea diferente.

Potrebbero piacerti anche