Wyszukiwanie liczb w tablicy
Strona [ 1 ] z 1
| tomtaz |
09-03-2010 16:36 |
|
Użytkownik Status: Offline Dołączył: 08-03-2010 |
Witam wszystkich, mam program składający się z dwóch plików Tablice.java i Main.java które wyglądają następująco: Tablice.java: package tablice; import java.io.IOException; import javax.swing.JOptionPane; public class Tablice{ public static void czytajTab(int t[][] ) { int i,j; String odp; for(i=0; i<t.length; i++){ for(j=0; j<t[i].length; j++){ odp=JOptionPane.showInputDialog("Podaj"+(i+1)+"element tablicy"); t[i][j]=Integer.parseInt(odp); } } } public static void drukTab(int t[][] , String tekst) throws IOException{ String wynik; int i,j; wynik=" "; for(i=0; i<t.length; i++) for(j=0; j<t[i].length; j++) wynik+=t[i][j]+" "; JOptionPane.showMessageDialog (null, wynik, tekst, 1); } } Main.java package tablice; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException{ int i,j; int tablica [][]=new int[3][2]; Tablice.czytajTab(tablica); Tablice.drukTab(tablica, "oto elementy tablicy"); } } Mam taką treść zadania: Napisz program wybierający z każdego wiersza tablicy dwuwymiarowej największą wartość, a następnie wybierający najmniejszą wartość spośród wyszukanych elementów. Mam problem bo nie wiem jak się do tego zabrać . Robiłem podobny program w C++, wtedy posortowałem liczby od najmniejszej do największej i wypisałem największą. Czy tutaj też tak trzeba zrobić a może jest inny, prostszy sposób. Gdzie powinienem dołączyć ten fragment kodu, czy może muszę stworzyć kolejny plik?? Może macie gotowy fragment do takiego przypadku lub przykład na którym można analogicznie się wzorować
|
|
|
| Shalom |
09-03-2010 17:03 |
|
Użytkownik Status: Offline Dołączył: 30-01-2004 Skąd: Będzin / Kraków |
Jaki jest problem z wybraniem max z tablicy? o_O int max = tab[0]; //zakladamy ze pierwszy element to minimum for(int i=1;i<dlugosctab;i++) //przeglądamy calą tablicę if(tab[i]>max) //jeśli znaleźliśmy większą liczbę max=tab[i]; //to zapisujemy nowy max W twoim przypadku robisz tak dla każdego wiersza i zapisujesz te wartości w nowej tablicy. Następnie z nowej tablicy wybierasz minimum na zasadzie: int min = tab[0]; for(int i=1;i<dlugosctab;i++) if(tab[i]<min) min=tab[i]; Takie rozwiązanie daje nam O(n) a nie O(nlogn) jak to z sortowaniem... Non nascuntur sed fiunt christiani ![]() Nie masz kłopotów? Kup komputer... [Na prv/gg przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie] Ostatnio zmodyfikowany: 09-03-2010 17:04 przez Shalom |
|
|
| tomtaz |
09-03-2010 17:22 |
|
Użytkownik Status: Offline Dołączył: 08-03-2010 |
Wszystko dobrze tylko że to jest dobre gdybym miał tablicę jednowymiarową a mam dwuwymiarową, to będzie chyba trochę inaczej wyglądało . Poza tym to ja mam to dołączyć ten kod na końcu w pliku Tablice.java, a później odwołać się w Main.java?? tak??
|
|
|
| Shalom |
09-03-2010 18:26 |
|
Użytkownik Status: Offline Dołączył: 30-01-2004 Skąd: Będzin / Kraków |
Nie będzie wyglądalo inaczej. Będzie tylko dodatkowa pętla. Dodatkowo maxy musisz zapisać w nowej tablicy a potem wybrać z tej tablicy (jednowymiarowej!) minimum. Możesz to wstawić do jakiejś metody albo po prostu dopisać do main(), obojętne. Non nascuntur sed fiunt christiani ![]() Nie masz kłopotów? Kup komputer... [Na prv/gg przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie] |
|
|
| donkey7 |
09-03-2010 20:19 |
|
Użytkownik Status: Offline Dołączył: 24-04-2005 Skąd: Kraków |
package test; public class Main { public static void main(String[] args) { int[][] tablica = new int[10][10]; int minimumZMaksimówWRzędach = 0; for (int i = 0; i < 10; i++) { int maksimumWRzędzie = 0; for (int j = 0; j < 10; j++) { tablica[i][j] = 10 + (int) (Math.random() * 90); if (j == 0) { maksimumWRzędzie = tablica[i][j]; } else { maksimumWRzędzie = Math.max(maksimumWRzędzie, tablica[i][j]); } System.out.print(" " + tablica[i][j]); } if (i == 0) { minimumZMaksimówWRzędach = maksimumWRzędzie; } else { minimumZMaksimówWRzędach = Math.min(minimumZMaksimówWRzędach, maksimumWRzędzie); } System.out.println(); } System.out.println(minimumZMaksimówWRzędach); } } Niezbyt eleganckie ale bezpiecznie się refaktoruje ![]() "Daj komuś rybę, a nakarmisz go na jeden dzień. Naucz go łowić ryby, a nakarmisz go na całe życie." Ostatnio zmodyfikowany: 09-03-2010 20:27 przez donkey7 |
|
|
| tomtaz |
09-03-2010 21:42 |
|
Użytkownik Status: Offline Dołączył: 08-03-2010 |
Dziękuję ślicznie za pomoc
|
|
|
|
|
|
Strona [ 1 ] z 1
| 1 użytkownik(ów) przegląda ten temat (1 gości) |
|---|
| (żadnych zarejestrowanych użytkowników) |





. Robiłem podobny program w C++, wtedy posortowałem liczby od najmniejszej do największej i wypisałem największą. Czy tutaj też tak trzeba zrobić a może jest inny, prostszy sposób. Gdzie powinienem dołączyć ten fragment kodu, czy może muszę stworzyć kolejny plik?? Może macie gotowy fragment do takiego przypadku lub przykład na którym można analogicznie się wzorować






![;]](http://4programmers.net/templates/NewAge/imageset/gfx/smilies/squared.gif)