este algoritmo es correcto en java??

Iniciado por l9_in, 13 Junio 2011, 23:25 PM

0 Miembros y 1 Visitante están viendo este tema.

l9_in

lo que pasa es que estoy empezando a programar en java y quisiera saber si mi programa es correcto, si corre pero quiero saber si la sintaxis y las reglas de java se cumplen

Código (java) [Seleccionar]
import java.util.*;
public class palindromo {

   public static void main(String[] args) {
       Scanner escaner =new Scanner (System.in);
       
      int NUM,N,DIG,NAUX,CON,M,A[];
      A=new int[10];

System.out.println("Digita el numero");
       NUM=escaner.nextInt();
       
N=NUM;
DIG=1;

while (10<=N)
{
           N=N/10;
           DIG++;
}
// System.out.println("la cantidad de digitos son: "+DIG);

CON=0;
while (CON<DIG)
{
           M=NUM%10;
           A[CON]=M;
           NUM=NUM/10;
           CON++;
}

/* CON=0;
while (CON<DIG)
{
           System.out.println(A[CON]);
           CON++;
}
*/
CON=0;
NAUX=A[CON]*10+A[CON+1];

while (CON+1<DIG-1)
{
           NAUX=NAUX*10+A[CON+2];
           CON++;
}
       
System.out.println("El palindromo es: **"+NAUX+"**");

   }

}

.rn3w.

no entiendo mucho tu code pero la manera en que programas es muy complicado
te aconsejo que dividas cada problema en un metodo
"     divide y venceras    "
eh aqui el metodo palindromo


public String invertir(String cadena){
   int tamCadena =cadena.length()-1;
   String invertido="";
   int i=0;
   char caracter=' ';
        while(tamCadena>=0){
         
         caracter=cadena.charAt(tamCadena);
         invertido=invertido+caracter;
         tamCadena--;
    }
    return invertido;
   
    }


public boolean palindromo1(String cadena){
        boolean res=false;
        if(cadena.equals(invertir(cadena))){
            res=true;
        }
        return res;
    }


aki uso dos metodos que juntos realizan una sola tarea
bye bye

l9_in

#2
Cita de: bj Wilson A en 13 Junio 2011, 23:46 PM
no entiendo mucho tu code pero la manera en que programas es muy complicado
te aconsejo que dividas cada problema en un metodo
"     divide y venceras    "
eh aqui el metodo palindromo


public String invertir(String cadena){
  int tamCadena =cadena.length()-1;
  String invertido="";
  int i=0;
  char caracter=' ';
       while(tamCadena>=0){
       
        caracter=cadena.charAt(tamCadena);
        invertido=invertido+caracter;
        tamCadena--;
   }
   return invertido;
   
   }


public boolean palindromo1(String cadena){
       boolean res=false;
       if(cadena.equals(invertir(cadena))){
           res=true;
       }
       return res;
   }


aki uso dos metodos que juntos realizan una sola tarea
bye bye


ok ok ok,
mi diste la solucion, pero el maestro que esta medio loco de tanto programar asi me esta enseñando, me enseño c++ y ahora quiere los programas en java, lo que hice fue transcribirlos a java, (que por cierto si sirve mi programa  :xD), y nadamas quiero saber si es correcto como lo hize y sino solicito a alguien que me pueda ayudar  :-\ ... aaaaaaaaaaaa si, los metodos que me incluyes lo hacen con cadena de caracteres, pero mi maestro lo quiere con valores enteros, por eso utilizo el MOD.

en fin... a mi algoritmo nadamas le hace falta estar dividido en metodos,


oye una ultima cosa, como le saco la raiz a un numero en java?? me podrias poner un ejemplo??? gracias por responder!!! :laugh:



mira quiero sacarle raiz a FIB...:

public class primosdefibonacci {

   public static void main(String[] args) {
       int PRIM, SEG, FIB,A,M;
       float RA;
       
       PRIM=5;
       SEG=8;
       FIB=0;
       while (FIB<5000)
       {
           FIB=PRIM+SEG;
           PRIM=SEG;
           SEG=FIB;
           A=2;
           RA=Math.sqrt(FIB); // AQUI ME MARCA ERROR
               
               while(A<=RA)
               {
                   M=FIB%A;
                   if (M==0)
                       A=FIB;
                   A++;
               }
           if (FIB>A)
               System.out.println(FIB+"Es Primo");
           
       }
       
       
   }

}


ME MARCA ESTO AL COMPILAR:
found   : double
required: float
            RA=Math.sqrt(FIB);

.rn3w.

Espero que te sirva funciona con numerosssssssssssssssssssssssssssss
alguna otra duda??????????             bye bye
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 boolean capicua(int nume){
    boolean res=false;
    int num=invertirNumeros(nume);
    if(num==nume){
        res=true;
    }
    else{
    res=false;
    }
    return res;
    }

barbieturico

#4
Pues te lo digo de memoria, así que lo mismo no funciona así, pero el error que te está dando es porque tu programa espera que le pases un valor float para cargar en la variable RA, pero el resultado de Math.sqrt(FIB) devuelve un double. Para cargar el valor del double en el float deberás castearlo:
Código (java) [Seleccionar]
RA=new Double(Math.sqrt(FIB)).floatValue();

Otro detalle es que declaras todas las variables en mayúsculas. Esto funciona, pero en realidad es bastante feo. En mayúsculas se suelen declarar los nombres de constantes, y sería algo así:

Código (java) [Seleccionar]
static final int MICONSTANTE = 0;

Edito: Corregidos los tags para que interprete el código como java ;D

Debci

Solo como, consideración offtopic, usen, si es posible las tag's de code para java ;)
Como NO hacer un post en el foro de java/url]

Un saludo