2014-06-20 6 views
2

Donc je travaille sur un problème qui se concentre sur la prise de la somme cumulative d'un tableau, par exemple si j'ai un tableau de ({0,2,3, -1, -1}) il renvoie {0,2,5,4,3} ... ou si vous avez un tableau de [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] il devrait retourner [1, 3, 6, 10, 15, 21, 28, 36, 45, 55] ...Somme cumulée d'un tableau

En ce moment je suis aux prises avec deux problèmes que je dois utiliser la méthode donnée et je me bats avec quoi retour parce que le total ne sera pas .. Pour mon code, je sais que cela fonctionne pour additionner la somme d'un tableau, mais pas la somme cumulée comme dans mes exemples .. des lignes directrices seraient utiles.

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; 
} 
+1

Vous ne lisez jamais les éléments de 'in'. Cela semble problématique. –

+1

Cela ne compilera même pas. Vous dites que vous allez retourner un 'int []' mais vous retournez un 'int'. –

+0

désolé je fais je l'appelle dans ma méthode principale avec un tableau mis en place .. –

Répondre

2

Ne pas lire le tableau dans, en partie, mais aussi ne pas mettre à jour le tableau out, et ne pas le retourner. Cela devrait fonctionner pour vous.

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; 
} 
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; 
} 

Je crois que c'est ce que vous recherchez. Conservez une somme cumulative et mettez à jour cette somme avec chaque élément. Après avoir mis à jour la somme, remplacez l'élément par la somme.

Lorsque vous créez un nouveau tableau, pour l'initialiser utiliser

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

Vous devez également noter que dans la signature de la méthode que vous retournerez un tableau d'entiers, et la total variable est un entier, pas un tableau des entiers. Donc, vous voulez retourner la variable out.

me donne la sortie:

0 
2 
5 
4 
3 
1
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]+" "); 
    } 
} 

SORTIE

1 3 6 10 15 21 28 36 45 

Si vous voulez mettre cela dans une méthode, vous pouvez retourner le dernier élément comme celui-ci:

return out[out.length-1]; 
Questions connexes