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: Nybras en 16 de Mayo 2016, 22:09

Título: Punto Equilibrio en un arreglo o array: sumar desde derecha e izquierda
Publicado por: Nybras en 16 de Mayo 2016, 22:09
Buen Día, no tengo mucho conocimiento sobre la programación y pues tengo un ejercicio que realizar por más que investigo y miro no encuentro una solución al menos parecida, al ejercicio.

El ejercicio es sobre un arreglo de N, indices me debe mostrar en cual(s), hay un punto de equilibro .

Ejemplo:
  0  1  2 3 4 5 6
{6,-6,6,2,3,2,1}

Si se toma el indice 3(2), se deben sumar los indices a la derecha e izquierda y si el valor de la suma es igual es un punto de equilibrio y en dado de que la suma no es igual no es un punto de equilibrio..

Agradezco su gran colaboración..Gracias
Título: Re:Punto Equilibrio
Publicado por: Ogramar en 17 de Mayo 2016, 08:39
Hola, ¿Puedes poner ejemplos donde veamos distintos casos? ¿Qué lenguaje estás utilizando?

Salu2
Título: Re:Punto Equilibrio
Publicado por: Nybras en 17 de Mayo 2016, 16:27
Claro Ogramar!!

Te agrego una imagen, mostrando un ejemplo, solo para ampliar mas la información voy especificar los pasos que en teoría se aplican:

1: Ingresar la longitud del arreglo, esto por realizaría el usuario.
2. Ingresar una cantidad x de números, dependiendo de la longitud máxima del arreglo que el usuario ingreso en el punto anterior.
3. El usuario debe seleccionar un numero de los que ingreso en el punto anterior.
4 Como ejemplo el usuario selecciona un arreglo de 5 e ingresa los números 1,5,7,8,10,5 y selecciona el numero 8.
5. Como esta en la imagen anexa (Primer punto) la suma de los números que se encuentran a la izquierda es 13 y a la derecha es 15, sin contar el numero que el usuario selecciona, la suma de los 2 lados no es igual por lo cual no es un punto de equilibrio.
6. En la imagen (Punto 2), la suma es 6 por lo que si tiene punto de equilibrio.

Básicamente(http://) es esto lo que debo realizar (estaba pensando en un while, y dentro del mismo crear 2 arreglos independientes que cree la suma y las compare), como lo indico hasta ahora estoy aprendiendo a programar y mi conocimiento es muy limitado por eso recurro a ustedes..Gracias

EL LENGUAJE ES INDIFERENTE....
Título: Re:Punto Equilibrio en un arreglo o array: sumar desde derecha e izquierda
Publicado por: César Krall en 19 de Mayo 2016, 08:59
Hola!

Para adquirir la lógica de programación recomendamos leer https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0

Ver cursos en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Esquema solución planteado en Java:

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

public class Test {

    public static void main(String[] Args) {
        int[] arreglo1 = {1, 5, 7, 8, 10, 5};
        int[] arreglo2 = {-6, 6, 6, 2, 3, 2, 1};
        System.out.println("Comenzamos");
        existeEquilibrioEnIndice (3, arreglo1);
        existeEquilibrioEnIndice (3, arreglo2);   
    }

    public static boolean existeEquilibrioEnIndice (int indice, int[] arreglo) {
        int sumaizq=0; int sumader = 0;
        List <Integer> arr = new ArrayList<Integer> ();
        for (int i=0; i<arreglo.length; i++) {
            arr.add(arreglo[i]);   
        }

        System.out.println("Arreglo: "+ arr + " analizando indice "+indice + " (el primer indice es 0)");

        for (int i=0; i<indice; i++) {
            sumaizq = sumaizq + arreglo[i];   
        }
        System.out.println ("La suma hasta el índice elegido por la izquierda es " + sumaizq);
        for (int i=arreglo.length-1; i>indice; i--) {
            sumader = sumader + arreglo[i];   
        }
        System.out.println ("La suma hasta el índice elegido por la derecha es " + sumader);

        System.out.println ("Concluimos si es punto de equilibrio: "+ (sumaizq == sumader));

        return sumaizq == sumader;   
    }

}

El programita anterior da este resultado:

Comenzamos
Arreglo: [1, 5, 7, 8, 10, 5] analizando indice 3 (el primer indice es 0)
La suma hasta el índice elegido por la izquierda es 13
La suma hasta el índice elegido por la derecha es 15
Concluimos si es punto de equilibrio: false
Arreglo: [-6, 6, 6, 2, 3, 2, 1] analizando indice 3 (el primer indice es 0)
La suma hasta el índice elegido por la izquierda es 6
La suma hasta el índice elegido por la derecha es 6
Concluimos si es punto de equilibrio: true

Saludos!