elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejercicio Avanzado usando Java (POO)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio Avanzado usando Java (POO)  (Leído 20,291 veces)
enrique8923

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ejercicio Avanzado usando Java (POO)
« en: 22 Abril 2009, 07:25 am »

Amigos, soy un studiante de programacion, y tengo un problema muy dificil, y quisiera saber de algunas propuestas de solucion yaque ustedes son programadores avanzados de Programacion Orientada a Objetos (POO) con lenguaje Java.

El problema es el siguiente.
*) Programa que lea un numero y que se visualize lo siquiente:
   - Cantidad de digitos.
   - Suma de sus digitos.
   - Producto de sus digitos.
   - Digito izquierdo
   - Digito derecho.
   - Digito menor.
   - Digito mayor.
   - Numero invertido.
-------------------------------------------
tomen en cuenta q no hay limite de cantidad, puede ser cualquier numero con n digitos, digamos 5667 o puede ser 232, entienden?.
Bueno de antemano muchisimas gracias por su ayuda, cualquier propuesta sera bienvenida, y si tienen algun link de ejercicios parecidos a estos para yo poder practicar, se los agradeceria mucho.

Cuidense.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #1 en: 22 Abril 2009, 08:09 am »

El ejercicio lo resolví en C, de algo te servirá:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
    char buffer[30];
    signed int numero, ndigitos, suma = 0, producto = 1;
    printf("Introduzca numero : ");
    scanf("%i", &numero);
    ndigitos = strlen(itoa(numero, buffer, 10));
    signed int digitos[ndigitos];
    for(signed int i = 1; i <= ndigitos; i++)
    {
        digitos[i] = numero % 10;
        numero /= 10;
    }
    for(signed int i = 1; i <= ndigitos; i++)
    {
        suma += digitos[i];
    }
for(signed int i = 1; i <= ndigitos; i++)
    {
        producto *= digitos[i];
    }
    printf("\n\tCantidad de digitos : %i", ndigitos);
    printf("\n\tSuma : %i", suma);
    printf("\n\tProducto de sus digitos : %i", producto);
    printf("\n\tDigito izquierdo : %i", digitos[sizeof(digitos)/sizeof(int)]);
    printf("\n\tDigito derecho : %i", digitos[1]);
    printf("\n\nNumero inverso : ");
    for(signed int i = ndigitos; i > 0; i--)
    {
        printf("%i", digitos[i]);
    }
    return 0;
}
Puedes sacarle provecho a los for para calcular las sumas y productos.

No te preocupes seguro que aqui te ayudarán bien, solo tienes que poner un poco de tu parte, poniendo lo que llevas de codigo.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #2 en: 22 Abril 2009, 08:17 am »

Aquí no se hacen tareas pero te voy a dar un ayudita  :P.

Si quieres obtener los digitos, basta con hacer un bucle en el que se tome el numero y se aplique módulo 10, para obtener el ultimo digito, luego tomas el numero inicial y lo divides por 10 para obtener los 2 primeros, y estos 2 serán los que pasen nuevamente por el bucle y asi sucesivamente hasta obtener todos los digitos:

Ej: 548.

------>548%10=8
------------------>548/10=54

Aquí ya se obtuvo el 8, y para obtener los demas basta con almacenar el 57 obtenido de la division en una variable, y repetir el proceso el ciclo  ;). Y ya con esto podrás solucionar todas las preguntas, basta pensar un poco más  ;).

salu2 y suerte.
En línea





Mi blog:
http://amerikanocls.blogspot.com
Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #3 en: 22 Abril 2009, 08:21 am »

El ejercicio lo resolví en C, de algo te servirá:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
    char buffer[30];
    signed int numero, ndigitos, suma = 0, producto = 1;
    printf("Introduzca numero : ");
    scanf("%i", &numero);
    ndigitos = strlen(itoa(numero, buffer, 10));
    signed int digitos[ndigitos];
    for(signed int i = 1; i <= ndigitos; i++)
    {
        digitos[i] = numero % 10;
        numero /= 10;
    }
    for(signed int i = 1; i <= ndigitos; i++)
    {
        suma += digitos[i];
    }
for(signed int i = 1; i <= ndigitos; i++)
    {
        producto *= digitos[i];
    }
    printf("\n\tCantidad de digitos : %i", ndigitos);
    printf("\n\tSuma : %i", suma);
    printf("\n\tProducto de sus digitos : %i", producto);
    printf("\n\tDigito izquierdo : %i", digitos[sizeof(digitos)/sizeof(int)]);
    printf("\n\tDigito derecho : %i", digitos[1]);
    printf("\n\nNumero inverso : ");
    for(signed int i = ndigitos; i > 0; i--)
    {
        printf("%i", digitos[i]);
    }
    return 0;
}
Puedes sacarle provecho a los for para calcular las sumas y productos.

No te preocupes seguro que aqui te ayudarán bien, solo tienes que poner un poco de tu parte, poniendo lo que llevas de codigo.

Fuera de que fomentas la vagancia de los demas  >:(, veo que hay unas cosas en tu code que no son realmente lo esperado, ya que tu obtienes la longitud del numero con la funcion strlen, y de acuerdo a este creas el arreglo, y la escencia de todo es generarlo con operaciones básicas no crees :huh: :huh:.

salu2
En línea





Mi blog:
http://amerikanocls.blogspot.com
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #4 en: 22 Abril 2009, 08:24 am »

Y tu fuera de que no usas el botón "Modificar".

Soy novato en C, por eso lo resolví de esa manera.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #5 en: 23 Abril 2009, 04:03 am »

 :laugh: :laugh: :laugh: :laugh:

es problema no es dificill mas bien es una broma  (no te molestes)


el truco no es usar funciones matematicas conplejas para dar la solucion todo lo contrario las soluciones mas sencillas logicas y cortas que se te puedan presentar son las mejores

comensemos que no necesitas calcular las cifras usando funciones matematicas eso es perdida de tiempo mejor usa la clase String(mientras mas clases conoscas que te hagan la tare por ti mejor)

para mostrarte como se ase tu tarea solo te resolvere las mas "sencillas"  :laugh: :laugh: tu lla ases las mas dificiles


Código:
//cantidad de digitos
    int cantCifras= txtnumero.getText().length();
    txtrespuesta.setText(""+cantCifras);

Código:
//suma de digitos

    int cont =0;
    for(int c=1;c<=txtnumero.getText().length();c++){
        System.out.print(c+" "+txtnumero.getText().charAt(c-1)+"\n");
        cont =cont +Integer.parseInt(txtnumero.getText().charAt(c-1)+"");
    }
    txtrespuesta.setText(cont+"");
    }

En línea

enrique8923

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #6 en: 14 Mayo 2009, 07:01 am »

Hola, muchas gracias por sus respuestas, y sus recomendaciones.
-- Gracias  Leo Gutierrez , aun no se mucho el lenguaje C, pero es un lenguaje de programacion muy interesante, que puede que lo aprenda por mi mismo.

-- Gracias AmeRiK@nO, tu consejo me ayudo en la solucion del algoritmo, y cuando vi tu respuesta, pude darme cuenta que desde alli se hacia todo, bueno investigue mas, pero tu recomendacion fue el punto de partida.

-- Gracias sapito169, bueno esta chevere tu codigo y la recomendacion de usar metodos de String, pero el truco del algoritmo es ese, usar la matematica para crear el algoritmo, en lo personal, a mi me gusta hacer un algoritmo que funcione no solo en el JCreator, sino que tambien funcione con otros lenguajes, y como te daras cuenta, en general los algoritmos matematicos se aplican en todo, porque te muestran la logica del desarrollo del problema y aparte cualquier comprenderia la solucion del problema con el algoritmo, pero si yo uso metodos que no muchos conocen, no seria un algoritmo muy general, pero eso no quiere decir que tu algoritmo no sea bueno ni nada, solo que no todos conocen la tremenda cantidad de metodos del JCreator, pero tomare en cuenta tu consejo, de conocer mas metodos, eso me facilitaria la cosa a la hora de trabajar, puesto que en un trabajo no me pondria a pensar en crear un algoritmo, sino en aplicar un metodo que incluya ese algoritmo.

poreso la programacion orientada a objetos, creas tu clase, con atributos y metodos propios, y solo convocas el metodo con el algoritmo, y listo, es un metodo que conozco que contiene un algoritmo que conozco :).

aqui esta el desarrollo en POO.

=============CLASE===============
public class Numero {
   
   public int num;
   public static int digi=0,suma=0,ninver=0,pro=1,ndere=0,
                                      nizqui=0,menor=10,mayor=-1,resto=0;
                  
   public Numero(int num){
            
   this.num=num;
   Numero();
   }
   
public void Numero(){
      
      do{
   Resto();
   Producto();
   Suma();
   NDerecha();
   NInvertido();
   NMayor();
   NMenor();
   digi++;
                num/=10;
            }while(num>0);
      
            NIzquierda();
       }
   
public void Resto(){
      
         resto=num%10;
         
}
public static void Producto(){
      
   pro*=resto;
}
public static void Suma(){
      
   suma+=resto;
}
public static void NDerecha(){
      
   if(digi==0)
   ndere=resto;
}
public static void NIzquierda(){
      
   nizqui=ninver%10;
}
public static void NInvertido(){
      
   ninver=ninver*10+resto;
}
public static void NMayor(){
      
   if(resto>mayor)
     mayor=resto;
}
public static void NMenor(){
      
if(resto<menor)
   menor=resto;
    }      
}

=============PROCESAR============

void procesar(){
      
Numero a= new Numero(getN());
      
listado();
   
}
void listado(){
      
imprimir("Cantidad de Digitos: "+Numero.digi);
imprimir("Suma de digitos    : "+Numero.suma);
imprimir("Producto de digitos: "+Numero.pro);
imprimir("Digito Izquierdo   : "+Numero.nizqui);
imprimir("Digito Derecho     : "+Numero.ndere);
imprimir("Digito Menor       : "+Numero.menor);
imprimir("Digito Mayor       : "+Numero.mayor);
imprimir("Numero Invertido   : "+Numero.ninver);
      
}
int getN(){
return Integer.parseInt(txtNumero.getText());
  }
}

En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #7 en: 16 Mayo 2009, 02:07 am »

jajaj dificil? Pobres los que programan compiladores, navegadores, mapas...
En línea

Myth.ck


Desconectado Desconectado

Mensajes: 303


Algorithmics & C++ Studient


Ver Perfil
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #8 en: 16 Mayo 2009, 03:04 am »

jajaj dificil? Pobres los que programan compiladores, navegadores, mapas...

 :xD

La verdad era un algoritmo de entrenamiento, no era tan avanzado. Al menos hubiese estado bueno un algoritmo con arrays o matrices, eso si puedo creer que es algo avanzado. Pero capaz que enrique se está introduciendo en este lenguaje.
En línea

Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
Aeros

Desconectado Desconectado

Mensajes: 199


Ver Perfil
Re: Ejercicio Avanzado usando Java (POO)
« Respuesta #9 en: 16 Mayo 2009, 06:58 am »

pasa el numero a string y que uses esa clase para separar digitos y demas cosas (subtring,value off,etc)

si empiezas algo de codigo te ayudo, si no no:P


En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda guardar historial usando Java
Programación General
voiser 0 3,485 Último mensaje 27 Agosto 2012, 19:00 pm
por voiser
Ayuda Java niv:Avanzado!
Java
juancaa 6 3,780 Último mensaje 16 Diciembre 2012, 01:06 am
por kasiko
Ejercicio en Java usando swing
Ejercicios
CarlosvAlencia 1 3,682 Último mensaje 16 Noviembre 2013, 16:31 pm
por Mitsu
Necesito ayuda con un Ejercicio en C usando while, if, else
Programación C/C++
amcup 1 2,093 Último mensaje 23 Mayo 2014, 22:45 pm
por x64core
Ejercicio usando Colas en C++
Programación C/C++
RGT 8 15,648 Último mensaje 12 Noviembre 2015, 23:00 pm
por avesudra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines