Suma acumulativa de una Matriz

Así que estoy trabajando en un problema que se centra en la consideración de la suma acumulativa de una matriz por lo que por ejemplo si tengo una matriz de ({0,2,3,-1,-1}) devuelve {0,2,5,4,3}… o si tiene una matriz de [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] debe devolver [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]…

Ahora mismo estoy luchando con dos problemas que tengo para usar el método dado y estoy luchando con lo que volver, porque total no se.. A mi código sé que funciona para la adición de hasta la suma de una matriz, pero no la suma acumulativa como en mis ejemplos.. cualquier directrices podrían ser de utilidad.

public int[] makeCumul(int[] in) {
    int[] out = { in.length };
    int total = 0;
    for (int i = 0; i < out.length; i++) {
        total += out[i];
    }
    return total;
}
  • Nunca estás leyendo cualquiera de los elementos de in. Que parece problemático.
  • Esto no incluso compilar. Dicen que van a devolver un int[] pero estamos volviendo de un int.
  • lo siento, no puedo llamar en mi principal método con un conjunto de matriz..
  • El código tiene varios errores básicos en ella. 1) la creación de out como un tamaño de 1 matriz. 2) Su método de sig dice a devolver un int[] pero en realidad estás devolver un int. 3) Usted nunca realmente leer alguno de los valores en la matriz de entrada.
InformationsquelleAutor | 2014-06-20

3 Kommentare

  1. 3

    No la lectura de la matriz, en parte, pero también la no actualización de la salida de la matriz, y no devolverlo. Esto debería funcionar para usted.

    public int[] makeCumul(int[] in) {
        int[] out = new int[in.length];
        int total = 0;
        for (int i = 0; i < in.length; i++) {
            total += in[i];
            out[i] = total;
        }
        return out;
    }
  2. 2
    public class Sum {
        public static void main(String[] args) {
            int in[] = {1,2,3,4,5,6,7,8,9};
            int[] out = new int[in.length];
            out[0] = in[0];
            for (int i = 1; i < out.length; i++) 
                out[i] = out[i-1] + in[i];
    
            for (int i = 0; i < out.length; i++) 
                System.out.print(out[i]+" ");
        }
    }

    SALIDA

    1 3 6 10 15 21 28 36 45 

    Si quieres poner esto en un método, usted puede devolver el último elemento como este:

    return out[out.length-1];
  3. 0
    public static int[] makeCumul(int[] in) {
        int[] out = new int[in.length];
        int sum = 0;
        for(int i = 0; i < in.length; i++){
            sum += in[i];
            out[i] = sum;
        }
        return out;
    }

    Creo que esto es lo que usted está buscando. Mantener una suma acumulativa, y la actualización de la suma de cada elemento. Después de la actualización de la suma, reemplace el elemento con la suma.

    Cuando se crea una nueva matriz, para inicializar el uso

    int[] out = new int[ARRAY SIZE HERE];

    También debe tener en cuenta que en la firma del método se devuelve una matriz de números enteros, y la variable total es un número entero, no un array de enteros. Así que usted quiere devolver la variable out.

    Me da la salida:

    0
    2
    5
    4
    3

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea