Java - Ayuda con un algortitmo

 
Vista:
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Morokei (12 intervenciones) el 13/04/2017 23:05:55
Necesito ayuda con un algoritmo para sumar las cifras en posicion par y restar las de posicion impar algo asi:

posicion 54321
cifras 96345

sumar cifras de posición par: 4+6 = 10
sumar cifras de posición impar: 9+3+5 = 17
restando: 10 - 17 = -7

Lo que se es que puedo usar %2 para saber si la posicion es par o impar pero no ser como implementarlo para poder sumar alguien podria ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Jordi (135 intervenciones) el 14/04/2017 16:19:40
Para obtener la última cifra de el numero puedes crear una variable aux donde se almacene este dividido en 10 y multiplicado en 10 (siempre en formato entero) por lo que esta perderá la ultima cifra. Luego puedes añadir con alguna sentencia if((numero - aux) % 2 == 0 //Para pares...) el número a una lista donde al terminar de separar los números se sumen todos sus valores.

Ejemplo:

Numero a procesar 12345.

aux = 12345 / 10 = 1234 * 10 = 12340.

12345 - 12340 = 5.

5 % 2 = 1.

5 se añade a una lista con los valores impares.

Numero a procesar actualizado 1234.

aux = 1234 / 10 = 123 * 10 = 1230.

1234 - 1230 = 4.

4 / 2 = 0.

4 se añade a una lista con los valores pares.

Se repite el proceso hasta que numero actualizado es 0.

Se suman todos los valores de la lista de pares.
Se suman todos los valores de la lista de impares.

PD: No he hecho el código porque soy muy novato en java y me tomaría horas, pero el tema de esquematizar algoritmos se me da bién y en un par de minutos pude terminar el esquema que te he dejado. Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Jordi (135 intervenciones) el 14/04/2017 20:02:12
Por lo que he visto está muy bien.
Ya me enseñarás como ha quedado el código una vez lo termines de desarrollar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Morokei (12 intervenciones) el 15/04/2017 02:30:45
Ya empece con el codigo por el momento tengo esto, me falta la parte que suma los digitos pero no logro ponerla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class PN{
 
   private int  Num;
   private int  Suma;
   /**
     * 
     */
    public PN()
    {
        Num     = Num;
        Suma    = 0;
    }
 
   public int Cifras (int Num)
   {
       int Cont  =0;
       int Cifra =0;
           while (Num > 0){
               Cifra = Num % 10;
               Num   = Num / 10;
               Cont  = Cont + 1;
 
           }
       return Cont;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Jordi (135 intervenciones) el 15/04/2017 14:02:23
Esto podría servirte...

1
2
3
4
5
if((Num % 10) % 2 == 0){
 
Suma += Num % 10
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Jordi (135 intervenciones) el 15/04/2017 14:15:36
Como estaba aburrido me ha dado por ponerme a hacer el método y me ha quedado esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public int sumarPares(int numero){
 
int numeroAux = numero;
int sumaPares = 0;
 
while(numeroAux != 0){//Con esta expresión se puede aplicar el método a positivos y negativos.
 
if((numeroAux % 10) % 2 == 0){
 
sumaPares += numeroAux % 10;
 
}
 
numeroAux /= 10;
 
}
 
return sumaPares;
 
}

No me gusta tener que usar variables auxiliares y creo que se puede quitar, así en vez de dividir numeroAux entre 10 se hace directamente con el parámetro. Ni idea si se puede hacer así, como digo más arriba, soy nuevo en Java.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Morokei (12 intervenciones) el 18/04/2017 02:18:39
Muchas gracias pro la ayuda me hiciste dar cuenta de varias cosas, este es el codigo que estaba haciendo ya lo termine gracias a tu ayuda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class Pensamientos_positicos_o_negativos{
 
       public int Cifras (int Num)
       {
           int      Cont  =0;
           int      Cifra =0;
           int      Suma  =0;
           boolean  Son_pensamientos_positivos;
                    while (Num > 0){
                        Cifra = Num % 10;
                        Cont  = Cont + 1;
                                 if (Cont%2==0){
                                     Suma=Suma+Cifra;
                                 }else{
                                     Suma=Suma-Cifra;
 
               }
                Num   = Num / 10;
 
        }
 
        if(Suma>0){
            Son_pensamientos_positivos=true;
            System.out.println ("Son pensamientos positivos");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌███████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌███┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌██┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌███┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌███┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌██┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌███┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌███┌███┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌████████████┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌█████████┌┌");
                            System.out.println ("███┌┌┌┌█████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌█████┌");
                            System.out.println ("██┌┌┌███████┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌███┌");
                            System.out.println ("██┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("███┌┌┌┌┌┌┌┌┌┌┌█████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌███┌┌┌┌┌┌┌████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌┌████████████┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌███┌██████┌┌┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌███┌┌┌┌┌┌┌┌┌┌┌██████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌┌████┌████┌██████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
                            System.out.println ("┌┌┌████████████┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌███┌");
                            System.out.println ("┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌███████┌┌┌┌┌┌┌███████┌┌");
                            System.out.println ("┌┌┌┌████┌┌┌┌┌┌████████┌┌┌┌┌┌┌┌████████┌┌");
                            System.out.println ("┌┌┌┌┌████████████┌┌┌███┌┌┌┌┌███┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌███┌█┌█┌┌┌┌┌┌███┌┌┌███┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌███┌┌┌┌┌┌█████┌┌█████┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌██████████████████┌┌┌┌┌┌┌┌┌┌┌┌┌");
                            System.out.println ("┌┌┌┌┌┌┌┌┌┌██████████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
        }else{
            Son_pensamientos_positivos=false;
            System.out.println ("Son pensamientos negativos");
                            System.out.println ("███████▄▄███████████▄");
                            System.out.println ("▓▓▓▓▓▓█░░░░░░░░░░░░░░█");
                            System.out.println ("▓▓▓▓▓▓█░░░░░░░░░░░░░░█");
                            System.out.println ("▓▓▓▓▓▓█░░░░░░░░░░░░░░█");
                            System.out.println ("▓▓▓▓▓▓█░░░░░░░░░░░░░░█");
                            System.out.println ("▓▓▓▓▓▓█░░░░░░░░░░░░░░█");
                            System.out.println ("▓▓▓▓▓▓███░░░░░░░░░░░░█");
                            System.out.println ("██████▀░░█░░░░██████▀");
                            System.out.println ("░░░░░░░░░█░░░░█");
                            System.out.println ("░░░░░░░░░░█░░░█");
                            System.out.println ("░░░░░░░░░░░█░░█");
                            System.out.println ("░░░░░░░░░░░░▀▀");
        }
 
        return Suma;
 
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con un algortitmo

Publicado por Andrés (340 intervenciones) el 15/04/2017 19:10:09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int cifras(int numero) {
 
        int posicion = 1;
        int suma = 0;
 
        while(numero!=0) {
 
            suma+=(0==(posicion++)%2) ? numero%10 : -(numero%10);
            numero/=10;
 
        }
 
        return suma;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un algortitmo

Publicado por Jordi (135 intervenciones) el 15/04/2017 20:52:16
Disculpa, el ir reducido puede utilizarse con métodos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con un algortitmo

Publicado por Andrés (340 intervenciones) el 14/04/2017 18:04:46
Dado el arreglo llamado digitos de longitud n

1
2
3
4
5
6
7
8
suma<-0
para i desde 0 hasta n-1 hacer
 si 0 == i%2 entonces
    suma <-  suma + digitos[i]
  si no
    suma <- suma + (-1)*digitos[i]
  fin_si
fin_para
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar