/*
Napisz klasę o nazwie Tablica, która przy pomocy dostępnych metod pozwoli na inicjalizację tablicy dwuwymiarowej o
rozmiarze n x m wartościami w postaci dowolnych liczb całkowitych z zakresu [a, b] oraz na wyświetlenie k najczęściej
powtarzających się wartości w tablicy, jeżeli takie istnieją oraz ich pozycje, na których występują. Następnie dla tak
określonej klasy napisz klasę testową, która pozwoli przetestować oraz dopracować kod utworzonych metod.
Jeszcze trochę zostało...
*/
package zad1;
class Tablica {
int _tablica[][];
public Tablica() {
_tablica=null;
}
public void
set(int n, int m, int liczba) throws Exception {
if(checkIndexes(n, m)) _tablica[n-1][m-1]=liczba;
else throw new Exception("Index poza wymiarami tablicy"); }
public int
get(int n, int m) throws Exception {
if(checkIndexes(n,m)) return _tablica[n-1][m-1];
throw new Exception("Index poza wymiarami tablicy");
}
private boolean
checkIndexes(int n, int m) {
if(_tablica==null) return false;
if((_tablica.length<n)||(_tablica[0].length<m)) return false;
return true;
}
public void
create(int n, int m) { _tablica=new int[n][m]; }
public void
init() {
if(_tablica==null) return;
for(int i=0;i<_tablica.length;i++) for(int j=0;j<_tablica[0].length;j++) _tablica[i][j]=(int)(Math.random()*100);
}
public Licznik[]
getMostReapated(int k) throws Exception{
if(_tablica==null) throw new Exception("Tablica nie utworzona");
if(k<1) throw new Exception("Liczba nie powinna być mniejsza od jedynki");
Licznik liczby[]=new Licznik[k];
Licznik min;
for(int i=0;i<k;i++) liczby[i]=new Licznik();
for(int i=0;i<_tablica.length;i++) for(int j=0;j<_tablica[0].length;j++) {
int l=get(i+1, j+1);
min=liczby[0];
for(int m=0;m<k;m++) if(liczby[m].getLicznik()<min.getLicznik()) min=liczby[m];
int ile=getRepeatCount(l);
if(min.getLicznik()<ile) { min.setLiczba(l); min.setLicznik(ile); }
}
return liczby;
}
public int getRepeatCount(int liczba) throws Exception {
if(_tablica==null) throw new Exception("Tablica nie jest utworzona");
int licznik=0;
for(int i=0;i<_tablica.length;i++) for(int j=0;j<_tablica[0].length;j++) {
if(get(i, j)==liczba) licznik++;
}
return licznik;
}
class Licznik {
int liczba, licznik;
public Licznik() {
liczba=0;
licznik=0; }
public Licznik(Licznik l) {
liczba=l.getLiczba();
liczba=l.getLicznik();
}
public void setLiczba(int l) { liczba=l; }
public void setLicznik(int l) { licznik=l; }
public int getLiczba() { return liczba; }
public int getLicznik() { return licznik; }
public void add() { licznik++; }
}
}
…………………………………………………………………………………………
package we1;
public class We1 {
int tablica[][];
public We1() {
tablica=new int[10][10];
}
void init() {
for(int i=0;i<10;i++) for(int j=0;j<10;j++) tablica[i][j]=i*10+j;
}
void sortuj() {
int tmp;
for(int i=0;i<10;i++) for(int j=i;j<10;j++) {
if(tablica[j][0]<tablica[i][0]) {
for(int k=0;k<10;k++) {
tmp=tablica[j][k];
tablica[j][k]=tablica[i][k];
tablica[i][k]=tmp;
}
}
}
}
int pobierz(int x, int y) {
//if((x<tablica[0].length()) && (y<tablica[0].length)) return tablica[x][y];
return tablica[x][y];
}
}
package we1;
import junit.framework.TestCase;
public class We1Test extends TestCase {
We1 test;
protected void setUp() throws Exception {
test=new We1();
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testWe1() {
assertNotNull(test);
}
public void testInit() {
test.init();
for(int i=0;i<10;i++) for(int j=0;j<10;j++) assertEquals(test.pobierz(i, j), i*10+j);
}
public void testSortuj() {
test.sortuj();
}
}