Este tema es para todos los que estan interesados en programar en JAVA
la finalidad es que compartamos ideas, ejercicios entre otros
Dada una cadena y una subCadena
verificar si la subCadena se encuentra en la Cadena
ejemplo:
entrada: cadena =hola entrada: cadena =hola
subCadena = hol subCadena = nuj
salida: verdadero salida: falso
public boolean existe(String palabra, String sub){
boolean res=false;
int tamPalabra=palabra.length();
int tamSub= sub.length();
int i=0;
while(i<tamPalabra && tamSub<=tamPalabra){
String auxPal=palabra.substring(i,tamSub);
if(auxPal.equals(sub)){
res=true;
}
else{
tamSub++;
}
i++;
}
return res;
}
:rolleyes: :laugh: ;-) :silbar: :silbar: :laugh: ;-)
Hola qué tal.
http://foro.elhacker.net/java/faqentry_point_sources_guias_manuales_tutoriales_y_demas-t298215.0.html
http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html
http://foro.elhacker.net/ejercicios/ejercicios_recursivos_en_java_y_sus_soluciones-t231013.0.html
http://foro.elhacker.net/ejercicios/juego_ejercicios_2_java-t282378.0.html
http://foro.elhacker.net/ejercicios/ejercicios_resueltos_java_programacion_estructurada-t201981.0.html
http://foro.elhacker.net/ejercicios/ejercicios_simples_en_java-t221889.0.html
PD. No hace falta que envíes MP :¬¬
Saludos.
Muy buenajavascript:void(0); aportacion nadamas que si quiero en contrar en la palabra "hola" la subcadena "la" pone false lo unico que hay que agregar es en el while el signo igual
tamSub<=tamPalabra es una pequeñes
Dado un numero entero positivo, se pide eliminar las segundas ocurrencias repetidas de digitos
ejemplo
entrada= 2356342
salida = 56342
- bueno mandare un problema cada 2 o 3 dias y luego publicare la respuesta
ejercicio 1: hacer la siguiente serie
entrada: 22
salida: 22,11,34,17,52 , 26, 13,40,20,10,5,16,8,4,2,1
solucion
public ArrayList<Integer> secuencial(int n){
ArrayList<Integer> res=new ArrayList<Integer>();
while(n%2==0 && n>1){
res.add(n);
n=n/2;
while(n%2==0 && n>1){
res.add(n);
n=n/2;
}
res.add(n);
if(n%2!=0 && n>1){
n=(3*n)+1;
}
}
return res;
}
Ordenar la siguiente secuencia
El problema consiste en que los numeros mayores de la secuencia se encuentren en los ambos estremos
entrada: {4, 5, 6} entrada: {1,1,1,1,2,1,2}
salida:{5,4,6} salida: {1,1,1,1,1,2,2}
sino me explique muy bien preguntan porfa
S O L U C I O N
public int [] ordenarSecuencia(int [] secuencia){
int tam = secuencia.length;
int avance =tam/2;
int mayor, menor=0;
if(tam%2==0){
for(int i=0; i< avance; i++){
for(int j=i+1; j< avance; j++){
if(secuencia[i]<secuencia[j]){
menor = secuencia[i];
mayor = secuencia[j];
secuencia[i]=mayor;
secuencia[j]=menor;
}
}
}
for(int i=tam-1; i>= avance; i--){
for(int j=i-1; j>= avance; j--){
if(secuencia[i]<secuencia[j]){
menor = secuencia[i];
mayor = secuencia[j];
secuencia[i]=mayor;
secuencia[j]=menor;
}
}
}
}
else{
for(int i=0; i<= avance; i++){
for(int j=i+1; j<= avance; j++){
if(secuencia[i]<secuencia[j]){
menor = secuencia[i];
mayor = secuencia[j];
secuencia[i]=mayor;
secuencia[j]=menor;
}
}
}
for(int i=tam-1; i>= avance; i--){
for(int j=i-1; j>= avance; j--){
if(secuencia[i]<secuencia[j]){
menor = secuencia[i];
mayor = secuencia[j];
secuencia[i]=mayor;
secuencia[j]=menor;
}
}
}
}
return secuencia;
}
Cuantos numeros pares ocupan posiciones impares
Ejemplo:
Entrada: 25472 Entrada:85876122
Salida : 3 Salida:4
public int invertirNumeros(int numerito){
int res=0;
int aux=0;
while(numerito>=10){
aux=numerito%10;
res= res*10+aux;
numerito=numerito/10;
}
res=res*10+numerito;
return res ;
}
public int posiciones(int numero){
int res=0;
int copiaInvertido=invertirNumeros(numero);
while(copiaInvertido>99){
if((copiaInvertido%10)%2==0){
res++;
}
copiaInvertido=copiaInvertido/100;
}
if(copiaInvertido%2==0){
res=res+1;
}
return res;
}
Dada una secuencia de elementos se pide encontrar el conjunto clausura
Ejemplo
Entrada: {1,5,6}
salida : {{},{1},{5},{6},{1,5},{1,6},{5,6},{1,5,6}}
eliminar caracter de una cadena
(dieta y lo que comes)entrada:hola, la entrada: mundo , m
salida:ho salida: undo
cada ves que comes la comida de tu dieta se reduce
public String ejercicioA1(String dieta, String []provar){
int tamPro = provar.length-1 ;
int i=0;
int a=0;
String alimento="";
int tamA=0;
int tamDieta=dieta.length()-1;
while(i<= tamPro){
alimento = provar[i];
tamA= alimento.length();
while(a<= dieta.length()-1 && tamA<= dieta.length()){
if(alimento.equals(dieta.substring(a,tamA))){
dieta=dieta.replace(dieta.substring(a,tamA)," ");
}
a++;
tamA++;
}
a=0;
i++;
}
return dieta;
}
Problem Statement
You are given an integer num from which you should replace the last two digits such that the resulting number is divisible by factor and is also the smallest possible number. Return the two replacement digits as a String.
For instance:
if num = 275, and factor = 5, you would return "00" because 200 is divisible by 5.
if num = 1021, and factor = 11, you would return "01" because 1001 is divisible by 11.
if num = 70000, and factor = 17, you would return "06" because 70006 is divisible by 17.
public int invertir(int numero){
int aux=0;
while(numero>9){
aux= aux*10+numero%10;
numero=numero/10;
}
aux= aux*10+numero;
return aux;
}
public int reservando(int numero){
int reserva=0;
int cont=0;
while(cont <2){
reserva=reserva*10+numero%10;
numero= numero/10;
cont++;
}
return reserva;
}
public String multiplosAumentados(int numero2, int factor){
int numero= numero2;
int reserva=0;
int res=0;
String contadorMultiplo=" ";
numero=numero-(invertir(reservando(numero2)));
while(numero%factor!=0){
numero++;
}
res= invertir(reservando(numero));
contadorMultiplo= res+ " ";
return contadorMultiplo;
}
}
todos los divisores de un numero
public ArrayList<Integer> divisores(int numero){
int cociente=1;
int copia= numero/2;
ArrayList<Integer> arreglo= new ArrayList<Integer> ();
while(cociente<= copia){
if(copia%cociente==0){
arreglo.add(cociente);
}
cociente++;
}
arreglo.add(numero);
return arreglo;
}
no olviden poner
import java.util.*;
bye byeeeeeeeeeeeeeee
import java.util.*;
public ArrayList<Integer> divisores(int numero){
int cociente=1;
int copia= numero/2;
ArrayList<Integer> arreglo= new ArrayList<Integer> ();
while(cociente<= copia){
if(copia%cociente==0){
arreglo.add(cociente);
}
cociente++;
}
arreglo.add(numero);
return arreglo;
}
espero que les sirva //solo para novatos
ustedes tambien pueden poner ejercicios propuestos o resueltos a asi ayudarnos entre colegas de la programacion
Escribe un programa que solo a través de procesos RECURSIVOS reciba dos cadenas c1 y c2, y
devuelva una respuesta que diga si c1 es sufijo de c2. Ej.-
Entradas Salidas
C1="ado" C2="Teclado" respuesta=true
C1="eon" C2="Cancion" respuesta=false
Recuerda que para obtener los caracteres de un String uno por uno debes utilizar el método
charAt(int i)
Me puenden ayudar??
Cita de: dan_69 en 30 Agosto 2011, 19:45 PM
Escribe un programa que solo a través de procesos RECURSIVOS reciba dos cadenas c1 y c2, y
devuelva una respuesta que diga si c1 es sufijo de c2. Ej.-
Entradas Salidas
C1="ado" C2="Teclado" respuesta=true
C1="eon" C2="Cancion" respuesta=false
Recuerda que para obtener los caracteres de un String uno por uno debes utilizar el método
charAt(int i)
Me puenden ayudar??
public boolean sufijo(String c1, String c2){
if(c1.length() == 0)
return true;
int aux = c1.length();
if(c1.charAt(c1.length()-1) == c2.charAt(c2.length()-1))
return sufijo(c1.substring(0, c1.length()-1), c2.substring(0, c2.length()-1));
else
return false;
}
como hago esto ???
:PSe pide diseñar procesos(s) recursivo(s) necesario(s) para decidir si un número es un supernúmero.
Se dice que un número es un súper número, si y solo si la suma de sus dígitos al cuadrado, es
menor que la suma de los dígitos más significativos (excluyendo el dígito de la unidad) al cubo y
esta suma a su vez es menor que la suma de los dígitos más significativos (excluyendo las decenas)
elevadas a la cuarta, y así sucesivamente. Por ejemplo:
Caso 1:
n = 111111
no es súper número ya que la suma de sus dígitos al cuadrado 6 es mayor a la suma de los cubos del
numero sin unidades que es 5
Caso 2:
n = 55432
si es súper número, ya que la suma de los dígitos al cuadrado es 79 y menor que la suma de los
dígitos al cubo que es 341, y 341 es menor que la suma de los dígitos más significativos excluyendo
decenas elevado a la cuarta que es 1506. 1506 a su vez es menor que 6250 que vendría a ser la
suma de los dígitos a la 5 excluyendo las centenas.
Y por último 6250 es menor que 15625.
Tienes dos mensajes en el foro y los dos son haciendo peticiones de ejercicios. La primera me salté las normas del foro y te puse el código y ni si quiera has agradecido por el simple hecho de que NO es mi tarea y la postee. Ahora el segundo mensaje viene siendo más de lo mismo pidiendo ejercicios sin tan si quiera decir sí a ti se te ha ocurrido algo...
En fin.
perdon por no agradecerte...mil gracias por el codigo ... solo necesitaba ubicarme en el problema
lo quieres si o si con recursividad???????
manejo de archivos...crear un archivo txt e ingresar datos
import java.util.*;
import java.io.*;
public class txt
{
private File archivo;
public void crear(String nombreCarpeta){
archivo= new File("D:\\"+nombreCarpeta+".txt");
try{
FileWriter escritor = new FileWriter(archivo);
BufferedWriter ayudaEscritor= new BufferedWriter(escritor);
ayudaEscritor.close();
}
catch(Exception e){}
}
public void ingresar(String nombreCarpeta, String [] datos){
archivo= new File("D:\\"+nombreCarpeta+".txt");
ArrayList<String> campos= new ArrayList<String>();
try{
String linea="";
FileReader leedor= new FileReader(archivo);
BufferedReader auxLeer= new BufferedReader(leedor);
FileWriter escritor = new FileWriter(archivo);
BufferedWriter ayudaEscritor= new BufferedWriter(escritor);
while((linea=auxLeer.readLine())!=null){
campos.add(linea);
}
for(int a=0;a<=datos.length-1;a++){
campos.add(datos[a]);
}
for(int i=0; i<=campos.size()-1; i++){
ayudaEscritor.write( campos.get(i) );
ayudaEscritor.newLine();
}
ayudaEscritor.close();
}
catch(Exception e){}
}
}
Cita de: bj Wilson A en 12 Septiembre 2011, 21:41 PM
manejo de archivos...crear un archivo txt e ingresar datos
import java.util.*;
import java.io.*;
public class txt
{
private File archivo;
public void crear(String nombreCarpeta){
archivo= new File("D:\\"+nombreCarpeta+".txt");
try{
FileWriter escritor = new FileWriter(archivo);
BufferedWriter ayudaEscritor= new BufferedWriter(escritor);
ayudaEscritor.close();
}
catch(Exception e){}
}
public void ingresar(String nombreCarpeta, String [] datos){
archivo= new File("D:\\"+nombreCarpeta+".txt");
ArrayList<String> campos= new ArrayList<String>();
try{
String linea="";
FileReader leedor= new FileReader(archivo);
BufferedReader auxLeer= new BufferedReader(leedor);
FileWriter escritor = new FileWriter(archivo);
BufferedWriter ayudaEscritor= new BufferedWriter(escritor);
while((linea=auxLeer.readLine())!=null){
campos.add(linea);
}
for(int a=0;a<=datos.length-1;a++){
campos.add(datos[a]);
}
for(int i=0; i<=campos.size()-1; i++){
ayudaEscritor.write( campos.get(i) );
ayudaEscritor.newLine();
}
ayudaEscritor.close();
}
catch(Exception e){}
}
}
¿No sería mejor en el método crear establecer la ruta completamente con el parámetro que se le pasa a la función? De la forma que tú lo tienes estás obligando a que exista el medio D:\\. Por cierto, ¿ese método que es lo que hace exactamente? ¿crear un archivo vacío?.
Saludos.
pero para que complicarnos si podemos hacer todo en un solo directorio, la busqueda de archivos en varios directorios es muy costoso y respondiendo a la segunda pregunta si es un archivo vacio por que el formato .txt es totalmente libre acomparacion del formato .xml que es de la siguiente manera <a>cuerpo<a>. saludos...
Cita de: bj Wilson A en 14 Septiembre 2011, 02:28 AM
pero para que complicarnos si podemos hacer todo en un solo directorio, la busqueda de archivos en varios directorios es muy costoso y respondiendo a la segunda pregunta si es un archivo vacio por que el formato .txt es totalmente libre acomparacion del formato .xml que es de la siguiente manera <a>cuerpo<a>. saludos...
Si, pero puede ser que la persona que ejecute ese código no tenga un directorio D:\\ y por tanto lance una excepción que además no se trataría.
Por otro lado, porque tanta complicación sin con esto mismo también crearías un archivo vacío:
File archivo2 = new File("rutaYNombre" + ".txt");
try {
archivo2.createNewFile();
} catch (IOException e) {
System.out.println("Imposible crear archivo");
}
Por otro lado, a la hora de ingresar contenido en el archivo, en estas líneas concretamente:
while((linea=auxLeer.readLine())!=null){
campos.add(linea);
}
for(int a=0;a<=datos.length-1;a++){
campos.add(datos[a]);
}
for(int i=0; i<=campos.size()-1; i++){
ayudaEscritor.write( campos.get(i) );
ayudaEscritor.newLine();
}
ayudaEscritor.close();
podrías hacerlo directamente no? es decir, hacer esto:
while((linea=auxLeer.readLine())!=null){
ayudaEscritor.write(linea);
ayudaEscritor.newLine();
}
for(int a=0;a<=datos.length-1;a++){
ayudaEscritor.write(datos[a]);
ayudaEscritor.newLine();
}
ayudaEscritor.close();
De esa forma te ahorrarías el último bucle que sería equivalente a los dos anteriores (creo que a la hora de escribir la información lo haría igual que como tú propones).
Saludos.
muchas gracias ... por la sugerencia me sirvio de mucho para tener un code mas limpio