Problem sa racunanjem sume kolona u dvodimenzionalnom nizu

1

Problem sa racunanjem sume kolona u dvodimenzionalnom nizu

offline
  • Pridružio: 18 Dec 2009
  • Poruke: 14

Napisano: 10 Mar 2015 10:43

Cao svima,

Resio sam da pocnem da ucim pod stare dane i nasao neki po meni ok tutorijal.
Pocetnik sam pa se ne uzbudjute mnogo.
Naisao sam na jedan problem koji me vec dva dana muci.
Nikako da uspesno napisem kod da racuna sumu i prosek kolona u tablici.
Za red je lako al za kolonu muke zive.
package je******;
import java.util.Random; public class Trabunjanje {    public static void main(String[] args) {              Random rand = new Random(System.currentTimeMillis());       int red = 5;       int kolona = 4;       double total = 0;       double prosek = 0;       double kolTotal = 0;       double kolProsek = 0;              Double[][] tablica = new Double[red][kolona];              for (int r = 0; r < red; ++r)          for (int k = 0; k < kolona; ++k)             tablica[r][k]= (double) rand.nextInt(11);              for (int r = 0; r < red; ++r){          System.out.print("red "+ (r+1) +": ");          for (int k = 0; k < kolona; ++k)             System.out.printf(tablica[r][k]+ "  ");             System.out.println();                          }       for (int r = 0; r < red; ++r){          for (int k = 0; k < kolona; ++k)             total += tablica[r][k];          prosek = total / kolona;          System.out.println("Prosek "+ (r+1) +" reda je: "+ prosek +" a total je: "+ total);          total = 0;          prosek = 0;       }       for (int r = 0; r < red; r++){                       for (int k = 0; k <= kolona; k++){             kolTotal += tablica[k][r];             kolProsek = kolTotal / red;          }          System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek);          kolTotal = 0;               kolProsek = 0;       }                              }
Daj ako neko moze da pogleda i kaze mi sta radim pogresno

Dopuna: 10 Mar 2015 10:49

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at jeb****.Trabunjanje.main(Trabunjanje.java:38)


ovo je greska koja mi se javlja
mada u ovom konkretnom slucaju on sve uradi i izracuna
problem se javlja kad prmenim velicinu tablice, odnosno kad mi je broj kolona veci od broja redova
sto ima veze sa ovim
"System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek); "
znam da tu treba da je (k+1) ali tad ne vidi k zbog zatvorene zagrade a kad ubacim to u zagradu onda ga stampa puno puta
tako da sam udario u zid

Dopuna: 10 Mar 2015 10:53

Znam ja i sto se javlja ova greska al neznam kako da je resim
znam da on pocne da vrti i prelazi granicu od 4 kolko ima kolona i izbaci mi gresku al kako to da resim je moje pitanje.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

38. red popravi sa
kolTotal += tablica[k][r];
na
kolTotal += tablica[r][k];



offline
  • Pridružio: 18 Dec 2009
  • Poruke: 14

Ne shvatam sta sam time dobio, to isto imam i kad racunam red sumu?
Samo sto sad total bude podeljen sa brojem redova. Hvala sto si pogledao al mislim da gresis!

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Ako računaš prosek kolone, onda i treba deliti zbir sa brojem redova/vrsta.

offline
  • Pridružio: 18 Dec 2009
  • Poruke: 14

Pa znam da treba al ja dobijam sumu redova koju delim sa brojem redova a treba mi suma kolone koju cu da podelim sa brojem redova!!!

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Dalje, prvi indeks indeksira vrstu, a drugi kolonu. Dakle, prvo treba r, pa onda k. Obzirom da imaš samo četiri kolone, a r ti ide do 4, tu program puca jer adresiraš memoriju koju nisi rezervisao.

offline
  • Pridružio: 18 Dec 2009
  • Poruke: 14

Ko sto rekoh znam ja sta je problem al ne umem da ga resim.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Aha, potrebno je izvući liniju 39 izvan unutrašnje petlje. Zbog toga i ne dobijaš tačan rezultat.

offline
  • Pridružio: 18 Dec 2009
  • Poruke: 14

k cannot be resolved to a variable

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Napisano: 10 Mar 2015 16:23

Mada, i ovako dobijaš tačan rezultat. Svakako, ta linija je tu višak. Very Happy

Dopuna: 10 Mar 2015 16:25

Okej, hajde da ne dužimo. Ovako računaš prosek kolone:
kolTotal = 0; for (int k = 0; k < kolona; k++) {    for (int r = 0; r < red; r++)       kolTotal += tablica[r][k];    kolProsek = kolTotal / red;    System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek);      kolTotal = 0;    kolProsek = 0; }

Dopuna: 10 Mar 2015 16:27

Da, sad uočih, imao si i sledeću grešku:
for (int k = 0; k <= kolona; k++)

umesto

for (int k = 0; k < kolona; k++).

Ko je trenutno na forumu
 

Ukupno su 665 korisnika na forumu :: 9 registrovanih, 1 sakriven i 655 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Ageofloneliness, AMCXXL, Bobrock1, Japidson, Koridor, M1los, mrav pesadinac, Ognjen D., zlaya011