Foro de Java y C++ de Chuidiang

Este foro se mueve a Foro de Java y C++

Foro de Java y C++ de Chuidiang
Metodo que transforme cadena "3467" en 3,467 USANDO RECURSIVIDAD
* E-mail:
* Password:
Registrarse Presentación Miembros Imágenes
¿Has olvidado tu Password?

Lista de mensajes
Autor Mensaje
Einki
 
Mensajes: 1
Registrado: Diciembre/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Re: Re: Metodo que transforme cadena 23/Diciembre/2008 - 15:52

A pues veras al final opte por hacer lo siguiente:

import java.io.*;
import java.util.*;

public class RecursionGus {

 public static void main(String args[]) {
  String cadena="125697"; //Aqui ingrese la cadena en forma entera para que pueda ser expresada como entero
  RecursionGus obj=new RecursionGus(); //declaramos objeto

  int tama;       // El metodo necesita el tamaño de nuestra cadena,
  int b=1;
  tama=cadena.length();     // Asi como iniciar en 1 para que en el metodo pueda funcionar
  
  int nm;
  nm=(int)(obj.recursivo(cadena,tama,b)); //llamada al metodo recursivo
  
  System.out.println(nm);
  int p=nm*100; // Hacemos alguna operacion con nuestro numero para corroborar su tipo
  System.out.println("Hacemos travesuras y con esto comprobamos \nque es un valor ENTERO y no una cadena mas");
  System.out.println(p);
 }

 
 
 public double recursivo(String cadena,int pos,int x) { //nuestro metodo recursivo

  double valor=0;

  if(x!=pos) {
   
   valor=((double)(cadena.charAt(x-1))-48)*(Math.pow(10,pos-x ));
                         
   return (valor+recursivo(cadena,pos,(x+1)));   
  }
  else {
   
  return ((double)(cadena.charAt(x-1))-48)*(Math.pow(10,pos-x ));
  }

 }
}

 

 

Gracias por tu respuesta!

lingurik
 
Mensajes: 1
Registrado: Diciembre/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Re: Metodo que transforme cadena 16/Diciembre/2008 - 06:59

Si no has hecho la función todavía quizá te sirva esto.

 

---funcion cadenita--- :)

parameters cadena     ;Le pasamos el numero, pero ya como cadena, o lo pasas a cadena en una función superior, y luego llamas a esta

que es la recursiva y estaría dentro de la que convierte el número en cadena.

devuelve=substr(cadena, 1, 1)    ;Cogemos el primer caracter.

longitud=len(cadena)             ;Calculamos la longitud de la cadena.

if len(cadena)=1                 ;Si la longitud de la cadena es 1, es el último caracter, no hace falta seguir y volvemos.
  return devuelve                ;
endif

tocapunto=mod(longitud, 3)       ;Comprobamos si la longitud es múltiplo de 3.

if tocapunto=1                   ;Si era el cuarto, el séptimo, etc. le ponemos un punto.
  devuelve=devuelve+'.'
endif

pasar=substr(cadena, 2)          ;Cogemos la cadena a partir del segundo caracter.

devuelve=devuevlve+cadenita(pasar)  ;Llamamos a la función pero con la cadena truncada a partir de segundo caracter.

return devuelve

Yo programaba en foxpro, estas funciones son de foxpro, si no has programado en foxpro no te sonarán los nombres de las funciones,

pero creo que son bastante fáciles de adivinar. Estoy aprendiendo java, pero no se los suficiente (más bien casi nada) como para

poner esto en java, y de C++ no se ni papa. Si te va la marcha puedes hacerlo con funciones numéricas, dividiendo entre mil, y por

cierto, ya ves que no pone nada de decimales, eso lo dejo para tus neuronas ;)

El programa lo he hecho mientras echaba un cigarrito, seguramente la salida de la recursividad la tendrás que ajustar, no creo que

funcione a la primera, pero todo podría ser. La base ya la tienes, ahora es cosa tuya acabarla, cuando la acabes, publicala en el

foro, para que pueda verla en java, o c++.


Usuarios activos
17 usuarios activos: 0 miembros y 17 huespedes en el foro.
 Reglas de mensaje
puedes escribir nuevos temas
puedes responder a los temas
puedes adjuntar archivos
no puedes editar tus mensajes
Contactar con el Administrador del foro.

La utilización del servicio vendrá condicionada por la previa aceptación de las Condiciones Generales de Uso del Servicio.



Foro gratis creado en ForosWebGratis.com. Crea tu propio foro aquí.