Tablice dwuwymiarowe -Zliczanie elementów

0

Hej, dopiero zaczynam przygode z programowaniem wiec prosze o wyrozumiałość :)
Potrzebuje zrobic program który będzie najpierw generowal losowa macierz o zdanej wysokosci i szerokosci /to juz mam/
Póżniej liczył jej GLCM - ze zdanego kierunku i odległośći
cos takiego ->
http://img.springerimages.com/Images/Springer/PUB=Springer_US-Boston/JOU=11265/VOL=2009.55/ISU=1-3/ART=2008_214/MediaObjects/WATER_11265_2008_214_Fig3_HTML.jpg
tylko ma byc zdany kierunek i odległość z której zlicza i tu wlasnie jest problem, nie mam zielonego pojecia jak to zrobic.
Na razie mam cos takiego :

import java.util.*;
public class Macierz {

	public static void main(String[] args) {
		int wysokosc;
		int szerokosc;
		int odleglosc;
		int kierunek;
		int wynik;
		
		  Scanner klawiatura = new Scanner(System.in);
		   System.out.print("Wczytaj wysokość swojej macierzy ");
      wysokosc = klawiatura.nextInt();
     
      
      System.out.print("Wczytaj szerokosc swojej macierzy ");
      
     szerokosc = klawiatura.nextInt();
   
		
		
		  Random los = new Random ();
	        int [][] macierz = new int [wysokosc][szerokosc];
	    
	        
	        for (int w = 0; w < wysokosc; w++){
	            for (int k = 0; k < szerokosc; k++){
	                macierz[w][k] = los.nextInt(3);
	                System.out.print((macierz[w][k]) + "   ");
	            }
	            System.out.println();
	        }    
	        
	        System.out.print("Wczytaj odległość zlicznia macierzy ");
	        
	        odleglosc = klawiatura.nextInt();
	      if (odleglosc > szerokosc){
	      System.out.println("Błąd, podaj mniejsza wysokosc : ");
	      odleglosc = klawiatura.nextInt();
	      }
	      System.out.println(" Podaj kierunek zliczania macierzy :"
	      		+ "1- prawo"
	      		+ "2-lewo"
	      		+ "3-góra"
	      		+ "4-dól");
	      kierunek = klawiatura.nextInt();
	      if (kierunek >4){
	      System.out.println("Błąd, podaj liczbe z zakresu ");
	      kierunek = klawiatura.nextInt();
	      }
	     if (kierunek == 1){
	   int[][] glcm= new int [3][3];
	   for (int w = 0; w < wysokosc; w++){
           for (int k = 0; k < szerokosc; k++){
        	
        		   if (macierz[w][k] == macierz[w+1][k]) {
        			   		wynik++ ;
0

Ogólnie to dobrze zaczynasz, ale trochę bałagan masz w tym kodzie. Nie wiem co oznacza odległość, bo po tym jak jest wczytywana nie jest użyta, to mógłbyś przybliżyć o co z tym chodzi. Poza tym proponuję ci napisać metody, które wypiszą na ekran twoje tablice macierz i glcm, żeby było wiadomo co się w nich dzieje.
Jak po wyborze kierunku masz if, żeby sprawdzić czy jest z zakresu, to znowu ktoś może wpisać źle, dlatego zwykle daje się tutaj pętlę while.

if (macierz[w][k] == macierz[w+1][k]) - to ci przekroczy zakres tablicy. Ogólnie to tu masz zliczać w odpowiedniej komórce glcm, a nie w wyniku.

0

W koncu sobie poradziłam, dzieki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1