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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Recorrer array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recorrer array  (Leído 1,857 veces)
sergio88

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Recorrer array
« en: 22 Septiembre 2019, 03:33 am »

Buenas noches, alguien me podría dar una mano con este ejercicio ?

Dado un array de enteros, hacer una función que indique que rangos de números consecutivos dan
como resultado la cantidad que se le pasa como parámetro:
Ej: array=(6,7,5,4,3,1,2,3,5,6,7,9,0,0,1,2,4,1,2,3,5,1,2)
 sumar(13)
Los elementos entre (0,1) suman 13
Los elementos entre (2,5) suman 13
Los elementos entre (3,7) suman 13
Los elementos entre (9,10) suman 13
Los elementos entre (12,19) suman 13
Los elementos entre (13,19) suman 13
Los elementos entre (14,19) suman 13
Los elementos entre (18,22) suman 13


« Última modificación: 22 Septiembre 2019, 03:35 am por sergio88 » En línea

EdePC
Moderador Global
***
Conectado Conectado

Mensajes: 2.067



Ver Perfil
Re: Recorrer array
« Respuesta #1 en: 22 Septiembre 2019, 05:30 am »

Saludos,

- La idea es guardar un índice inicial (idxIni) e ir sumando los demás valores hasta igualar la cantidad dada, si es igual: se imprime, se resetea la suma y se continúa con el siguiente índice, si se pasa: se hace lo mismo pero sin imprimir.

- A mí me está funcionando lo siguiente, ya te toca entenderlo e implementarlo dentro de una función:

Código
  1. class Recorre {
  2.  public static void main(String[] args) {
  3.    Scanner leer = new Scanner(System.in);
  4.    int[] array = { 6, 7, 5, 4, 3, 1, 2, 3, 5, 6, 7, 9, 0, 0, 1, 2, 4, 1, 2, 3, 5, 1, 2 };
  5.    int suma = 0;
  6.    int idxIni = 0;
  7.    System.out.print("Ingrese la cantidad: ");
  8.    int cantidad = leer.nextInt();
  9.  
  10.    for ( int i = 0; i < array.length; i++ ) {
  11.      suma += array[i];
  12.      if ( suma == cantidad ) {
  13.        System.out.println( "Los elementos entre (" + idxIni + "," + i + ") suman " + cantidad );
  14.      }
  15.      if ( suma == cantidad || suma > cantidad ) {
  16.        i = idxIni;
  17.        idxIni++;
  18.        suma = 0;
  19.      }
  20.    }
  21.  
  22.    leer.close();
  23.  }
  24. }

Código:
C:\Users\EdSon\Desktop>java Recorre.java
Ingrese la cantidad: 5
Los elementos entre (2,2) suman 5
Los elementos entre (6,7) suman 5
Los elementos entre (8,8) suman 5
Los elementos entre (16,17) suman 5
Los elementos entre (18,19) suman 5
Los elementos entre (20,20) suman 5

C:\Users\EdSon\Desktop>java Recorre.java
Ingrese la cantidad: 13
Los elementos entre (0,1) suman 13
Los elementos entre (2,5) suman 13
Los elementos entre (3,7) suman 13
Los elementos entre (9,10) suman 13
Los elementos entre (12,19) suman 13
Los elementos entre (13,19) suman 13
Los elementos entre (14,19) suman 13
Los elementos entre (18,22) suman 13

C:\Users\EdSon\Desktop>java Recorre.java
Ingrese la cantidad: 22
Los elementos entre (0,3) suman 22
Los elementos entre (1,6) suman 22
Los elementos entre (9,11) suman 22
Los elementos entre (11,19) suman 22

C:\Users\EdSon\Desktop>


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: Recorrer array
« Respuesta #2 en: 23 Septiembre 2019, 00:50 am »

Te pongo una sencilla solucion en pseudocodigo, a ti te toca pasarlo luego al lenguaje de tu interés, lo que solo te será posible si alcanzas a entenderlo correctamente (espero que si). con culaquier duda, pregunta...
Código:
entero = funcion X(array entero Valores, entero Valor)
    entero indice, suma, resultados

    indice =0
    suma = 0
    bucle para k desde 0 hasta valores.fin
        suma += valores(k)

        Hacer mientras (suma > valor)
            suma -= valores(indice)  // retira el valor sumado por el indice inicial
            indice +=1  
        Repetir

        Hacer mientras (suma = valor)  // ok, imprimir indices
            imprimir indice y k
            suma -= valores(indice)  // retira el valor sumado por el indice inicial
            indice +=1                    // indice 'consumido', se pasa al siguiente.
            resultados +=1
        repetir
    siguiente

    devolver resultados
fin funcion

Ejemplo para el array: (5, 5, 2, 3, 7, 0, 7, 8, 7, 0, 4, 8, 7, 3, 9, 8, 0, 9, 3, 5, 7, 3, 5, 4, 2)
con valor: 27
Resultados: 7
02-07 ::::  2 + 3 + 7 + 0 + 7 + 8  = 27
07-11 ::::  8 + 7 + 0 + 4 + 8  = 27
11-14 ::::  8 + 7 + 3 + 9  = 27
12-15 ::::  7 + 3 + 9 + 8  = 27
16-21 ::::  0 + 9 + 3 + 5 + 7 + 3  = 27
17-21 ::::  9 + 3 + 5 + 7 + 3  = 27
18-23 ::::  3 + 5 + 7 + 3 + 5 + 4  = 27


Con tu array: (6, 7, 5, 4, 3, 1, 2, 3, 5, 6, 7, 9, 0, 0, 1, 2, 4, 1, 2, 3, 5, 1, 2)
y el valor que diste: 13
Resultados: 8
00-01 ::::  6 + 7  = 13
02-05 ::::  5 + 4 + 3 + 1  = 13
03-07 ::::  4 + 3 + 1 + 2 + 3  = 13
09-10 ::::  6 + 7  = 13
12-19 ::::  0 + 0 + 1 + 2 + 4 + 1 + 2 + 3  = 13
13-19 ::::  0 + 1 + 2 + 4 + 1 + 2 + 3  = 13
14-19 ::::  1 + 2 + 4 + 1 + 2 + 3  = 13
18-22 ::::  2 + 3 + 5 + 1 + 2  = 13


Este algoritmo a diferencia del que ofrece EdePC, no precisa volver a sumar todo cada vez... es lineal, solo suma vada indice del array una vez, por tanto es más óptimo en cuanto a rendimiento.

p.d.: Me acabo de acordar que hace 2-4 días, dijsktra publicó en el foro de C, un problema muy similar, solo que aquél versaba de la diferencia entre pares de valores en un array (ordenado)... a dicha solución puede llegarse modificando el presente algoritmo... aunque es lo suficientemente distinto, como para empezar desde cero.
« Última modificación: 23 Septiembre 2019, 01:58 am por NEBIRE » En línea

sergio88

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Recorrer array
« Respuesta #3 en: 23 Septiembre 2019, 05:27 am »

Gracias por la mano muchachoss, ahi estoy tratando de escribir una funcion propia. Saludosss
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como recorrer Array + Listbox
Programación Visual Basic
Hendrix 1 4,185 Último mensaje 5 Enero 2006, 00:34 am
por Kizar
¿Como Recorrer un array en C++ ?
Programación C/C++
[GB] 4 26,117 Último mensaje 23 Julio 2010, 23:38 pm
por Eternal Idol
Recorrer Array
Programación C/C++
cobolitros 2 2,768 Último mensaje 7 Julio 2011, 21:08 pm
por leogtz
Problema al recorrer array
PHP
painkillerpucela 2 1,907 Último mensaje 14 Julio 2012, 00:04 am
por Stakewinner00
[Resuelto] Recorrer array como sesión
PHP
splendid37 2 2,636 Último mensaje 15 Febrero 2016, 16:29 pm
por splendid37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines