Autor
|
Tema: Recorrer array (Leído 1,857 veces)
|
sergio88
Desconectado
Mensajes: 2
|
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
|
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: class Recorre { public static void main (String[] args ) { Scanner leer = new Scanner (System. in); 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 }; int suma = 0; int idxIni = 0; System. out. print("Ingrese la cantidad: "); int cantidad = leer.nextInt(); for ( int i = 0; i < array.length; i++ ) { suma += array[i]; if ( suma == cantidad ) { System. out. println( "Los elementos entre (" + idxIni + "," + i + ") suman " + cantidad ); } if ( suma == cantidad || suma > cantidad ) { i = idxIni; idxIni++; suma = 0; } } leer.close(); } }
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
|
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... 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
Mensajes: 2
|
Gracias por la mano muchachoss, ahi estoy tratando de escribir una funcion propia. Saludosss
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como recorrer Array + Listbox
Programación Visual Basic
|
Hendrix
|
1
|
4,185
|
5 Enero 2006, 00:34 am
por Kizar
|
|
|
¿Como Recorrer un array en C++ ?
Programación C/C++
|
[GB]
|
4
|
26,117
|
23 Julio 2010, 23:38 pm
por Eternal Idol
|
|
|
Recorrer Array
Programación C/C++
|
cobolitros
|
2
|
2,768
|
7 Julio 2011, 21:08 pm
por leogtz
|
|
|
Problema al recorrer array
PHP
|
painkillerpucela
|
2
|
1,907
|
14 Julio 2012, 00:04 am
por Stakewinner00
|
|
|
[Resuelto] Recorrer array como sesión
PHP
|
splendid37
|
2
|
2,636
|
15 Febrero 2016, 16:29 pm
por splendid37
|
|