Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Wolf en 28 de Abril 2015, 16:53

Título: Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: Wolf en 28 de Abril 2015, 16:53
Hola compañer@s ! Miren, tengo una duda sobre como programar una serie numérica.

La serie es esta 1,5,3,7,5,9,7,11,9,13. Se va sumando 4 en las posiciones pares y restando 2 a los impares. La solución es está: 

Código: [Seleccionar]
import java.util.*;

public class Ejercicio_Operadores2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

int serie = 1;
boolean sumar=true;
int cont;
String cadena="Serie: ";

System.out.println("Indique cuantos numeros de la serie quiere ver: " );

Scanner sc = new Scanner (System.in);
cont=sc.nextInt();

do{

cadena=cadena.concat(String.valueOf(serie) + "  ");
cont --;
if(sumar==true){
serie+=4;
}else{
serie-=2;
}

sumar=!sumar;
}while(cont>0);

System.out.println(cadena);

}//Fin Main
}//Fin Clase

Me ha costado un poco entenderlo, pero creo que he captado la idea. Mi pregunta es, si hay alguna forma de hacerlo con Arrays. Que es como yo había pensado en un principio hacerlo. Muchas gracias por tu atención. Un saludo.
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: César Krall en 29 de Abril 2015, 09:08
Hola Wolf, antes de responder recordar que para pegar código debe hacerse como se explica aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

El programa se puede resolver con arrays, en realidad está mejor resuelto con arrays que con el código que tú has puesto ¿Por qué? Porque si almacenas los resultados en un array tienes la serie en formato numérico y puedes acceder de forma fácil (con el índice del array) a cada elemento de la serie. En cambio si tienes el resultado en un String no resulta  tan fácil de manejar (aunque si lo quieres sólo para mostrarlo por pantalla vale también).

El código con arrays sería este (hay unas líneas comentadas que corresponden a hacerlo con String, si las descomentas puedes ver los resultados de ambas maneras):

Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio_Operadores2_var {

    public static void main(String[] args) {
        int serie = 1;
        boolean sumar=true;
        int cont;
        //String cadena="Serie: ";

        System.out.println("Indique cuantos numeros de la serie quiere ver: " );
        Scanner sc = new Scanner (System.in);
        cont=sc.nextInt();

        int i=1;
        int elementos [];
        elementos = new int[cont];
        elementos[0]=1;
        //cadena=cadena.concat(String.valueOf(serie) + "  ");
        do{           

            if(sumar==true){
                serie+=4;
                elementos[i]=serie;
            }else{

                serie-=2;
                elementos[i]=serie;
            }
           
            //cadena=cadena.concat(String.valueOf(serie) + "  ");
            sumar=!sumar;
            i++;
        }while(i<cont);

        //System.out.println("Serie a partir de String: "+cadena);
        System.out.print("Serie a partir de array: ");
        for (int j=0; j<elementos.length;j++) {
            System.out.print(elementos[j]+ "  ");
        }

    }//Fin Main
}//Fin Clase

El resultado de este código debería ser el mismo que el del tuyo, si hubiera diferencias sería que hay algún error.

Saludos!!


Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: Wolf en 29 de Abril 2015, 10:09
Ahora lo tengo más claro. Lo tenía casi casi igual, me faltaba esto (elementos [ i ] = serie) y el último "for". Lo que más me liaba era el cómo detectar que estaba en la posición par o impar del Array. ¿Hay otra forma de forma hacerlo o es esta la más fácil? Muchísimas gracias por contestar, son de gran ayuda. Un saludo.

PD: Y perdón por lo del código. No me acordaba.
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: César Krall en 29 de Abril 2015, 12:01
En programación siempre hay muchas formas de hacer las cosas. Te recomiendo este curso para tener una visión amplia de java y sus posibilidades: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

El código anterior puede formularse de otras maneras para detectar la alternancia, por ejemplo usando el operador módulo:

Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio_Operadores2_var {

    public static void main(String[] args) {
        int serie = 1;
        int cont;
        System.out.println("Indique cuantos numeros de la serie quiere ver: " );
        Scanner sc = new Scanner (System.in);
        cont=sc.nextInt();
        int i=1;
        int elementos [];
        elementos = new int[cont];
        elementos[0]=1;
        do{           
            if(i%2!=0){
                serie+=4;
                elementos[i]=serie;
            }else{

                serie-=2;
                elementos[i]=serie;
            }
            i++;
        }while(i<cont);
        System.out.print("Serie a partir de array: ");
        for (int j=0; j<elementos.length;j++) {
            System.out.print(elementos[j]+ "  ");
        }
    }//Fin Main
}//Fin Clase

Saludos
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: Wolf en 29 de Abril 2015, 13:06
Eso es lo que había pensado para la alternancia, poner (i%2 !=0) para saber si esta en la posición impar. Muchas gracias por resolverme las dudas. ¡ Un abrazo !
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: jupertivo en 09 de Mayo 2015, 13:16
Hola César y Wolf. Disculpad mi intromisión en este post. Desde que lo vi no he parado de darle vueltas a un código alternativo (que siempre los habrá, por supuesto), ya que siempre vi dos series altenándose. La primera, números impares que empiezan en 1; y la segunda, números impares que empiezan en 5. Después se unen las dos en una sola serie altenando un valor de cada una de ellas. Bueno, ahí os dejo el código como prueba. Muy interesante el problema. Saludos.

Código: [Seleccionar]
import java.util.Scanner;
public class TestSerie{
    public static void main(String[]args){
        int numero;
        int i=0;
        System.out.print("Indique cuántos números de la serie quiere ver: ");
        Scanner entrada=new Scanner(System.in);
        numero=entrada.nextInt();
        int elementos[]=new int[numero];
        do{
           elementos[i]=i+1; //añado números de la serie 1
           i++;
           if(i<numero){
               elementos[i]=i+4; //añado números de la serie 2
               i++;}}
        while(i<numero);
        System.out.println("La serie resultante es:");   
        for (int j=0;j<elementos.length;j++){
               System.out.print(elementos[j]+ "  ");}}}
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: César Krall en 10 de Mayo 2015, 17:37
Hola jupertivo, tu código funciona a la perfección y es interesante ver cómo se pueden hacer otros planteamientos. Tal y como planteas podemos dividir una serie como 1,5,3,7,5,9,7,11,9,13 en dos series.

Por ejemplo

1 - 3 - 5 - 7 - 9

5 - 7 - 9 - 11 -13


Después podemos mezclar ambas series y nos devuelve la serie deseada...

Hay muchas variantes para resolver este problema. Buen aporte!

Saludos
Título: Re:Crear serie numérica Java 1,5,3,7,5,9,7,11,9,13 suma 4 en pares resta 2 en impar
Publicado por: inglimay en 10 de Enero 2017, 16:58
Buenas días, estoy empezando en desarrollo. Mi aporte es el siguiente.

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Scanner;

public class Series {
public static void main(String[] Args) {

int n1=0, n2=0, conta;
ArrayList<String> lista = new ArrayList<String>();
Scanner entrada = new Scanner(System.in);

System.out.println("Ingresar el primer valor:");
n1 = entrada.nextInt();

for (conta=1; conta<=n1; conta++){
if (conta%2!=0){
n2=conta;
lista.add(n2+"");
}
else{
n2=conta+3;
lista.add(n2+"");
}
}
System.out.println(lista);
}
}

--Resultado en consola

Ingresar el primer valor:
10
[1, 5, 3, 7, 5, 9, 7, 11, 9, 13]

Slds desde Perú.