[ danijelva @ 09.10.2007. 19:21 ] @
Potreban mi je kod koji ce da ispise matricu brojeva na ekranu od neke zadate vrednosti. Brojevi se redjaju redom, po vrstama.
Ovo mi ispisuje redom brojeve ali po kolonama, a meni treba po vrstama.
Kad promenim mesta ideksa i i j, ne radi.
Ako neko ima neku ideju kako ovo da uradim.


Code:

public class Program
{
    public static void main(String[] args)
    {
        int[][] matrica = new int[4][5];
        int brojac = 1;
        for (int i = 0; i < 4; i++)
        {
        
            
            for (int j = 0; j < 5; j++)
            {
                
                matrica[i][j] = brojac;
                System.out.print(matrica[i][j]);
                System.out.print(" ");
                brojac++;
                
                
            }
            System.out.println();
        }
    System.Console.ReadKey();
    }

}

Izlaz je
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20

A treba mi nesto ovako:

1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20




[ NikolaVeber @ 09.10.2007. 21:13 ] @
pa zameni petlje, tako da prvo iteriras po j pa onda po i... i umesto <4 i <5 kostisti matrica.length i matrica.length
[ sanchi @ 09.10.2007. 21:18 ] @
Grehota bre da ti neko ovo resi, a tako si blizu! Verujemo u tebe, samo napred!

Posle mozes i da stavis u cv, persistent, self motivated, strong problem solving abilities itd. ;)

"Upornost je majka uspeha"

[ danijelva @ 09.10.2007. 23:54 ] @
Nisam nista dobio menjanjem petlji. Opet vraca istu stvar. Uspeo sam nekako da "nabudzim" da to radi na drugi nacin (kod ispod).

Promenljive a i b su tu da bi se izbeglo menjanje koda u zavisnosti od duzine niza. Hvala za pomoc!

Ako neko uspe da resi menjanjem petlji bilo bi dobro da postuje, da vidim gde sam gresio :-).

@sanchi
bez tvoje podrske ne bi uspeo.... :-))




Code:

public class Program
{
    public static void main(String[] args)
    {
        int a = 4;
        int b = 5;
        int brojac = 10;
        int pocetna = brojac;
        int[][] matrica = new int[a][b];
        
        for (int i = 0; i < a;i++ )
        {
            for (int j = 0; j < b; j++)
            {
                matrica[i][j] = brojac;
                System.out.print(matrica[i][j]);
                System.out.print(" ");
                brojac+=a;
            }
            pocetna++;
            brojac = pocetna;
            System.out.println();
        }
    System.Console.ReadKey();
    }

}

[ rj444 @ 11.10.2007. 13:11 ] @
Program u kome zamenis redosled petlji u stvari radi, ali ti to ne vidis na izlazu iz prostog razloga sto sadrzaj matrice zavisi od ovog brojaca.
Drugim recima iako matricu ispisujes po vrstama, izlaz je isti kao kada je ispisujes po kolonama jer je takav sadrzaj matrice (inicijalizujes je dok je ispisujes).

Inicijalizuj matricu pre njenog obilaska (ispisivanja), pa onda napravi dva obilaska (po vrstama i po kolonama) i dobices pravilan izlaz.

Hint: Napravi metodu za svaku od ovih stvari (init, printRowByRow, printColByCol), a u glavnom programu samo barataj sa njima.

Pozdrav,
Rade
[ Bubashin @ 28.10.2018. 18:38 ] @
Ovako, kako da generisem matricu 10x10 to znam, ali kako da random u nju rasporedim 14 jedinica (gde jedinice predstavljaju brodice) i ostalo da budu nule, znaci prazna polja. Stigao sam do opsteg generisanja matrice, al ne umem da uradim sa jedinicama i nulama. Moze li ko da mi pomogne. Inace pravim program za potapanje brodica u eclipsu.

import java.util.Random;
import java.util.Scanner;

public class PotapanjeBRODOVA {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner unos = new Scanner(System.in);



System.out.println("Unesite broj redova matrice:");
int n = unos.nextInt();
System.out.println("Unesite broj kolona matrice:");
int m = unos.nextInt();


int [][] A = generisanjeMatrice(n,m);
int [][] B = generisanjeMatrice(n,m);
stampa1 (A);
stampa (B);


}

public static int [][] generisanjematrice(int n, int m, int k)
{

Random rnd = new Random();
int A [][] = new int [n][m];
for(int i=0; i<n; i++)
{
for(int j=0; j<m; i++)
{
A[j]= rnd.nextInt(50)+1;
}
}
return A;
}
public static void stampa1(int[][]A)
{
System.out.println("Matrica A je:");
for(int i=0; i<A.length; i++)
{
for(int j=0; j<A[0].length; j++)
{
System.out.print(A[j] + "\t");
}
System.out.println();

}
}

public static int [][] generisanjeMatrice (int n, int m)
{

Random rnd = new Random();
int B [][] = new int [n][m];
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
B[j]=rnd.nextInt(50)+1;
}
}
return B;
}
public static void stampa(int[][]B)
{

System.out.println("Matrica B je:");
for(int i=0;i<B.length;i++)
{
for(int j=0;j<B[0].length;j++)
{
System.out.print(B[j]+ "\t");
}
System.out.println();
}
}
}


[ Java Beograd @ 28.10.2018. 21:56 ] @
Ne tako.
Kao prvo treba ti dvodimenzionalni niz boolean a ne int.
Kao drugo, treba ti petlja od 14 iteracija, gde ćeš da koristiš random generator da ti izabere člana niza kojeg ćeš da setuješ na true.
[ Java Beograd @ 29.10.2018. 07:42 ] @
U stvari treba ti do - while petlja, u kojoj ćeš random da postavljaš neke elemente matrice na true.
Pošto je moguće da je upravo isti element već od ranije postavljen na true, treba proveravati koliko je trenutno postavljeno na true, i kad taj broj dostigne željenu cifru 14 izaći iz petlje.
[ Bubashin @ 29.10.2018. 08:33 ] @
A petlju treba da stavim i u jednu i u drugu matricu ? Znaci razbih mozak nocas do 2 i nista :(
[ mjanjic @ 29.10.2018. 10:17 ] @
Ali, prava igra potapanja brodića podrazumeva da neki brodići zauzimaju više polja, zar ne?

U tom smislu ne mogu baš sva polja koja se zadaju kao da su zauzeta brodićima biti baš random. Može da bude random prvo polje brodića, potom se odredi random pravac i smer ka sledećim poljima koja on zauzima, uz uslov da ako nema dovoljno polja do ivice u tom pravcu, onda mora neki drugi smer ili čak pravac.
[ Java Beograd @ 29.10.2018. 10:20 ] @

public class Podmornice {

public static void main(String[] args) {
new Podmornice();
}

private final int dimenzijaMatrice = 10;
private final int potrebanBrojPodmornica = 14;

private boolean matrica[][] = new boolean[dimenzijaMatrice][dimenzijaMatrice];
private Random randomGenerator = new Random();

public Podmornice() {

int dostignutiBrojPodmornica = 0;
int randomPoPrvojDimenziji;
int randomPoDrugojDimenziji;

while (dostignutiBrojPodmornica < potrebanBrojPodmornica) {
randomPoPrvojDimenziji = randomGenerator.nextInt(dimenzijaMatrice-1); // mislim da se ovako dobija random int izmedju 0 i 9 ali nisam 100% siguran
randomPoDrugojDimenziji = randomGenerator.nextInt(dimenzijaMatrice-1);

// Proverava da li je mozda na toj [x][y] lokaciji vec postavljena podmornica u nekoj od prethodnih iteracija.
// Ako nije, postavlja je, i inkrementira dostignuti broj podmornica
if (!matrica[randomPoPrvojDimenziji][randomPoDrugojDimenziji]) {
matrica[randomPoPrvojDimenziji][randomPoDrugojDimenziji] = true;
dostignutiBrojPodmornica++;
}
}
// na ovoj liniji koda imas popunjenu matricu, pa mozes da je prikazes ili sa njom radis sta vec treba
}
}
[ Java Beograd @ 29.10.2018. 10:23 ] @
Citat:
mjanjic:Ali, prava igra potapanja brodića podrazumeva da neki brodići zauzimaju više polja, zar ne?

Naravno, sad možemo da pustimo mašti na volju !

Ovo je odgovor, tj. pomoć Bubašinu, da krene sa mrtve tačke, jer je siroma' do dva noću mozgao.

Bilo kako bilo, kod koji sam postavio pravi matricu boolean 10x10 sa svim false vrednostima, i u njoj random postavljenih 14 vrednosti na true.